Удаление стиля :hover CSS с элемента: решение без jQuery
Быстрый ответ
Для отключения эффекта :hover
необходимо возвратить элементу прежние стили, соответствующие этому состоянию. Иными словами, вам нужно аннулировать эффект на наведение, как если бы вы отменили его действие.
.element:hover {
/* отключаем измения, возвращаем исходные стили */
background: original-background;
color: original-color;
}
Теперь при взаимодействии с элементом он останется без изменений.
Более сложные способы отключения эффекта наведения
В определенных случаях простое отключение эффекта :hover
может быть недостаточно. В этом случае может потребоваться более активный подход, вот некоторые из возможных решений:
Заблокировать события курсора: Сделайте элемент "невидимым" для событий курсора, используя
pointer-events: none;
. Так элемент больше не будет реагировать на наведение и клики:.no-hover { pointer-events: none; /* Элемент как неподвижный объект, на который не влияют воздействия */ }
Класс .disabled: Этот класс можно использовать как "щит" от воздействий, включая наведение:
.disabled:hover { background: original-background; pointer-events: none; /* Как защита, в безопасном пространстве для элемента */ }
Намеренное исключение эффектов: Иногда вам может потребоваться установить иерархию элементов. При помощи псевдокласса
:not()
вы сможете выборочно ограничивать применение эффектов:.element:not(.no-hover):hover { /* Стили для :hover; "VIP-статус для наведения!" */ }
Отображение элемента как "неактивного": Визуальный эффект "отключенного" элемента можно создать с помощью комбинации
pointer-events: none;
иopacity: 0.2;
, чтобы было ясно, что элемент не активен.Точечное переопределение стилей: Если нужно изменить определенный стиль при наведении, можно точечно настроить CSS-правила для этого.
Управление эффектом :hover
Метод "Закрой и успокой"
Представим :hover
как одеяло, которое накидывается на элемент. Чтобы его "убрать", можно перекрыть его другим, более "легким", используя свойство pointer-events: none;
и установив прозрачность равной opacity: 0.5
.
.top-layer:hover {
pointer-events: none; /* Безмятежность и легкость */
opacity: 0.5;
/* Привлечение внимания */
z-index: 100;
}
Использование JavaScript для динамического управления
Когда статические стили CSS не справляются с задачей, используйте JavaScript. По мере необходимости добавьте или удаляйте классы для управления эффектами при наведении:
document.querySelector('.element').classList.add('no-hover'); // класс ".no-hover" теперь на месте
Вот как может выглядеть соответствующее CSS-правило:
.no-hover:hover {
/* Стилей для эффекта :hover больше не будет */
}
Полезные практические примеры
Прочтение материала — это только полдороги, нужна еще практическая проработка. Примените реальные примеры, такие как JSFiddle, для закрепления полученных знаний, указанные в разделе полезные материалы.
Визуализация
Псевдокласс :hover
можно представить как муху (🪰), которая приземляется на ничего не подозревающий элемент при приближении курсора:
Элемент без :hover: 🟩 <-- Здесь всё спокойно, как в зеленом квадрате.
Заставляющее насторожиться беспокойство начинает развиваться при приближении "мухи":
Элемент с :hover: 🟩🪰 <-- Что за шум? Это "муха" добавляет элементу драматизма.
Пришло время избавиться от раздражающего "жужжания". Удалим :hover
:
CSS "пинцет": 🟩🚫🪰 <-- CSS берет инициативу в свои руки, "муха" улетает, наступает тишина при наведении.
Удалив эффект наведения, мы сохраняем спокойствие элемента, сравнимое с камнем в зен-саде 🟩.
Полезные материалы
- CSS :hover Селектор — Исчерпывающая информация и управление псевдоклассом :hover.
- :hover – CSS: Каскадные Таблицы Стилей | MDN — Детальный разбор и примеры работы с псевдоклассом :hover.
- Проблема двойного тапа по ссылке на мобильных устройствах | CSS-Tricks — Эффективные методы решения проблем, связанных с сенсорными событиями на мобильных устройствах.
- Селекторы Уровня 3 — Подробное руководство W3C по CSS-селекторам, в том числе :hover.
- Пример на JSFiddle – Обучающие примеры и упражнения по удалению эффектов наведения.