Многие сайты используют «подкладки» – небольшие всплывающие блоки, которые появляются при наведении курсора на элемент (картинку, ссылку, кнопку). Эта техника повышает интерактивность и визуальную привлекательность дизайна. Однако иногда нужно не просто добавить подкладку, а вернуть её после того, как пользователь покинул элемент. В этой статье мы разберём, как реализовать такой эффект с помощью CSS и, при необходимости, лёгкого JavaScript‑поддерживающего кода.
Что такое подкладка (overlay) и зачем её возвращать?
Подкладка – это дополнительный слой поверх основного контента, который появляется при взаимодействии. Он может показать:
- текстовую информацию (например, описание товара);
- иконки навигации (стрелка, крестик);
- контрольные элементы (кнопки «Перейти», «Скачать»).
Возврат подкладки обычно означает:
- сокрытие элемента, когда курсор уходит;
- восстановление исходного состояния страницы;
- сохранение плавной анимации перехода.
Минимальный CSS‑пример
Ниже приведён простой пример, где подкладка реализована через псевдо‑элемент ::after; При наведении фон меняется, а текст появляется.
.card {
position: relative;
width: 200px;
height: 150px;
overflow: hidden;
background: #f0f0f0;
border: 1px solid #ddd;
}
.card::after {
content: 'Подробнее';
position: absolute;
bottom: 10px;
left: 10px;
padding: 5px 10px;
background: rgba(0,0,0,0;7);
color: #fff;
opacity: 0;
transform: translateY(10px);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.card:hover::after {
opacity: 1;
transform: translateY(0);
} Свойства opacity и transform создают плавный «появление» подкладки. Как только курсор уходит, анимация автоматически возвращает элемент к исходному состоянию.
Использование display вместо opacity
Если вам нужен более «жёсткий» контроль над видимостью, можно переключать display в сочетании с visibility:
.overlay {
position: absolute;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.6);
color: #fff;
display: none;
justify-content: center;
align-items: center;
font-weight: bold;
}
.card:hover .overlay {
display: flex;
}
Плюс: display: none полностью убирает элемент из потока, уменьшает нагрузку на браузер.
Анимация возврата при уходе (leave)
Чтобы создать более «мягкий» эффект при уходе, используйте transition на свойствах, которые меняются при :hover. Ниже пример с плавной сменой прозрачности.
.card {
position: relative;
width: 250px;
height: 180px;
margin: 20px;
background: #e0e0e0;
transition: background-color 0.4s ease;
}
.card:hover {
background-color: #d0d0d0;
}
.card .subtle {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255,255,255,0.4);
opacity: 0;
transition: opacity 0.4s ease;
}
.card:hover .subtle {
opacity: 1;
}
Эффект: при наведении появляется полупрозрачный слой, который исчезает, когда курсор уходит.
Поддержка для старых браузеров
- Убедитесь, что используете
position: relativeу родителя, чтобы псевдо‑элемент корректно позиционировался. - Для IE10+ можно использовать
-ms-префиксы, но современные браузеры уже не требуют. - Проверяйте работу на мобильных устройствах – вместо
:hoverиспользуйте:activeили JavaScript‑обработчик клика.
JavaScript‑поддержка (если нужен более сложный контроль)
Иногда нужно менять состояние не только при наведении, но и по нажатию кнопки, или хранить состояние в переменной. Ниже пример, где подкладка открывается по клику, а закрывается при повторном клике.
<div class=»card» id=»card1″>
<div class=»overlay»>Нажми меня!</div>
</div>
// CSS (сокрытие по умолчанию)
.overlay { display: none; }
// JavaScript
const card = document.getElementById(‘card1’);
const overlay = card.querySelector(‘.overlay’);
card.addEventListener(‘click’, => {
const isVisible = overlay.style.display === ‘block’;
overlay.style.display = isVisible ? ‘none’ : ‘block’;
});
Таким образом, при каждом клике подкладка будет переключаться между видимым и скрытым состоянием.
Советы по дизайну
- Контрастность: убедитесь, что текст на подкладке легко читается на фоне. Используйте тёмный фон и светлый текст или наоборот.
- Размеры: подкладка не должна перекрывать важные элементы. Ограничьте её ширину и высоту.
- Трекинг: если подкладка содержит клавиши, добавьте
tabindexдля доступности. - Анимация: плавность важна. Слишком быстрый переход может раздражать, слишком медленный – потерять эффект.
Восстановление подкладки при уходе курсора – простая задача, но она требует внимания к деталям: позиционирование, анимации, доступность. Выберите подходящий способ в зависимости от требований к дизайну и совместимости с браузерами. Пример выше поможет быстро внедрить эффект, а дальнейшие доработки сделают его более гибким и красивым.
Удачи в реализации ваших UI‑инноваций!