Псевдоклассы :hover, :active и :focus
Псевдоклассы CSS — это специальные «состояния» элементов на странице, которые позволяют изменить их внешний вид в зависимости от действий пользователя. Самыми популярными псевдоклассами для интерактивности считаются :hover
, :active
и :focus
. Давайте разберём, как они работают и как их можно использовать для создания привлекательных интерфейсов.
Псевдокласс :hover
:hover
активируется, когда пользователь наводит курсор мыши на элемент. Например, с его помощью можно сделать так, чтобы кнопка меняла цвет, когда на неё навели.
Пример:
.button {
background-color: #4CAF50; /* зелёный фон */
color: white; /* белый текст */
}
.button:hover {
background-color: #45a049; /* более тёмный зелёный при наведении */
}
Здесь у кнопки .button
меняется фон на более тёмный при наведении курсора, что делает её интерактивной и показывает пользователю, что она кликабельна.
Псевдокласс :active
:active
срабатывает, когда элемент находится в состоянии «нажатия». Например, если пользователь кликнул на кнопку, :active
применится в тот момент, пока кнопка не отпущена.
Пример:
.button:active {
background-color: #3e8e41; /* ещё более тёмный зелёный при нажатии */
}
Этот псевдокласс помогает показать пользователю, что клик зарегистрирован. Кнопка меняет цвет, что добавляет эффект «реакции» на действие.
Псевдокласс :focus
:focus
используется для элементов, которые получают «фокус» при клике или переходе на них с клавиатуры (например, табуляцией). Это важно для полей ввода, кнопок и ссылок, чтобы улучшить навигацию и доступность сайта.
Пример:
input:focus {
outline: 2px solid #4CAF50; /* обводка вокруг поля ввода */
background-color: #e8f0fe; /* светло-голубой фон */
}
Когда пользователь кликает на поле ввода или переходит к нему через клавишу Tab
, вокруг появляется цветная рамка и меняется фон, что помогает понять, что элемент сейчас активен.
Совмещение псевдоклассов
Можно комбинировать эти псевдоклассы для создания более сложных эффектов. Например, можно сделать так, чтобы кнопка подсвечивалась при наведении, а при клике дополнительно изменяла цвет.
Пример:
.button {
background-color: #4CAF50;
color: white;
}
.button:hover {
background-color: #45a049;
}
.button:active {
background-color: #3e8e41;
transform: scale(0.95); /* лёгкое уменьшение кнопки при нажатии */
}
Здесь кнопка меняет цвет при наведении, а при нажатии становится чуть темнее и как бы «утоплена», создавая эффект интерактивности.
Интересный пример :hover эффекта
Вот классный пример hover
-эффекта, который создаёт стильный и плавный эффект подсветки кнопки. При наведении кнопка как бы «подсвечивается» снизу, а цвет фона плавно изменяется.
HTML:
<div class="button-container">
<a href="#" class="fancy-button">Наведи на меня!</a>
</div>
CSS:
/* Основные стили контейнера */
.button-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f4f4f9;
}
/* Стиль кнопки */
.fancy-button {
position: relative;
display: inline-block;
padding: 15px 30px;
color: #ffffff;
font-size: 18px;
font-weight: bold;
text-decoration: none;
background-color: #4CAF50; /* начальный цвет фона */
border-radius: 8px;
overflow: hidden;
transition: background-color 0.3s ease;
}
/* Подсветка снизу */
.fancy-button::before {
content: '';
position: absolute;
bottom: 0;
left: 50%;
width: 0%;
height: 4px;
background-color: #ffffff; /* цвет подсветки */
transition: width 0.4s ease, left 0.4s ease;
}
/* Эффект при наведении */
.fancy-button:hover {
background-color: #45a049; /* более тёмный цвет фона при наведении */
}
.fancy-button:hover::before {
width: 100%;
left: 0;
}
Посмотреть выполнение кода можно, кликнув на кнопку 🙂
Как это работает:
- Кнопка
.fancy-button
имеет базовый цвет и стиль. - Псевдоэлемент
::before
добавляет «линию подсветки» снизу, которая начинается с ширины0%
, но плавно увеличивается до100%
, когда пользователь наводит на кнопку курсор. - При наведении меняется и цвет фона самой кнопки, делая эффект более выразительным.
Эта кнопка выглядит привлекательно и добавляет небольшой визуальный эффект, который подчёркивает её интерактивность.
Материалы и ссылки
HTML Academy: «События при наведении. :hover, :focus, :active в CSS»
Medium: «Стилизуйте состояния hover, focus и active по-разному»
PurpleSchool: «Псевдоклассы. Изменение состояния элемента»
The 55 Best CSS Button Hover Effects You Can Use Too
Подводим итоги
Псевдоклассы :hover
, :active
и :focus
— это простой способ сделать сайт более живым и интересным для пользователей. Они помогают добавить эффекты и подсказки, которые показывают, что с элементом можно взаимодействовать.
Например, :hover
помогает выделить кнопки и ссылки, когда пользователь наводит на них мышку, показывая, что на них можно нажать. :active
даёт пользователю понять, что клик произошёл — элемент немного изменяется, когда на него нажимают. А :focus
делает навигацию проще, подсвечивая поля ввода и другие элементы, к которым переходит пользователь с клавиатуры.
Эти эффекты не требуют сложного кода, но значительно улучшают впечатления от сайта. Пользователям становится проще ориентироваться и работать с элементами интерфейса, а сам сайт выглядит продуманнее и современнее. Простые изменения, как в наших примерах, помогут привлечь внимание к нужным элементам и сделать взаимодействие с сайтом более приятным и понятным.
Спасибо, что прочитали нашу статью!
Успехов в кодинге и до новых встреч! 👋