Если вы примените border для элемента при наведении курсора мыши, он «раздвинет» окружающие элементы. Однако, используя отрицательное значение CSS-свойства margin, вы можете сделать это не затрагивая другие элементы или контент.

Давайте посмотрим пример, чтобы понять, как это в основном работает:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Add CSS Border on Hover without Moving the Elements</title>
<style>
    ul {
        padding: 0;
        list-style: none;
    }
    ul li { 
        float: left;
        margin: 10px;
    }
    ul li a, ul li a img {
        display: block;
    }
    ul li a:hover {
        border: 5px solid #333333;
        overflow: hidden;        
    }
    ul li a:hover img{
        margin: -5px;
    }
</style>
</head>
<body>
    <ul>
        <li><a href="#"><img src="club.jpg" alt="Club Card"></a></li>
        <li><a href="#"><img src="diamond.jpg" alt="Diamond Card"></a></li>
        <li><a href="#"><img src="spade.jpg" alt="Spade Card"></a></li>
        <li><a href="#"><img src="heart.jpg" alt="Heart Card"></a></li>
    </ul>
</body>
</html>

В качестве альтернативы вы можете установить border с той же шириной и значением цвета transparent для элемента по умолчанию. В контексте вышеприведенного примера это будет так: ul li a { border: 5px solid transparent; }. Теперь, при наведении будет изменяться цвет границы не меняя размеры элемента и не затрагивая окружающие элементы.

Читайте также

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.