Ховер что это в верстке

Работа с эффектами наведения CSS

Селектор :hover определят стиль элемента при наведении курсора мыши. Этот селектор можно использовать для всех элементов, а не только для ссылок. Псевдокласс CSS :hover запускается, когда пользователь наводит указатель мыши на элемент.

Стили, определяемые активами псевдо-класса, будут переопределены любым последующим классом. Например, :link, :active или :visited, который имеет хотя бы один равный атрибут. Поэтому используйте псевдокласс hover после :link и :visit, но перед :active.

Пример ссылок с разными стилями:

Пример применения псевдокласса к элементу <span>. Эффект проявляется при наведении курсора на элемент <div>:

Выпадающее меню

Пример, в котором мы будем отображать выпадающее меню при наведении курсора мыши:

Другой стиль

Еще один пример эффекта при наведении, но уже с другим стилем:

Нижняя граница становится фоном

Пример, в котором при наведении курсора на ссылку нижняя граница строки увеличивается и становится фоном:

Уменьшение интенсивности цвета

Эффект :hover, который проявляется уменьшением интенсивности цвета. Это отличный способ привлечь внимание к важному элементу на странице:

Увеличение ширины и высоты

Вы можете использовать свойство transform для увеличения ширины и высоты элемента при наведении курсора:

Вращение элемента

CSS-преобразования также можно использовать для реализации эффекта вращения элемента

Изменение формы элемента

Еще один популярный эффект – превращение круглого элемента в квадратный и наоборот

Изменение цвета границ

Еще один интересный эффект – изменение цвета границ элемента при наведении курсора. Для его реализации применяется переход с использованием тени для блока:

Поддержка браузерами: Google Chrome, Microsoft Edge, Firefox, Opera, Safari.

Заключение

CSS3 позволяет создавать множество красивых эффектов без использования Java Script. Это доказывают приведенные выше примеры.

Пожалуйста, оставьте ваши отзывы по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, лайки, подписки, дизлайки!

Ховеры бывают разные

Когда у нас в eLama компонентов в библиотеке стало достаточно много, мы заметили, что ховеры не имеют системы: меняется цвет заливки, цвет рамки, цвет текста, появляется тень и т.д.

Мы делали это не со зла, в отдельных проектах так работало лучше, но глядя на интерфейс в целом, стало понятно, что это проблема.

Даже у схожих компонентов ховеры были разные

Даже у схожих компонентов ховеры были разные

Не всё бывает тем, чем кажется

При разработке интерфейсов мы опираемся на принцип — то, что ты делаешь должно работать так, как того будет ожидать пользователь. Если пользователь видит перед собой кнопку, то он будет ожидать от нее поведение кнопки, а значит она должна и вести себя ожидаемо.

Например, у нас в библиотеке есть ссылка и кнопка, визуально похожая на ссылку. Из-за того, что в их поведении при ховере не было сильного различия, мог возникать вопрос, что произойдет при нажатии — перекинет на другую страницу, или действие будет на текущей странице. Поначалу даже были случаи, когда разработчики использовали кнопку, как ссылку, руководствуясь тем, что она выглядит и ведет себя при ховере похоже на ссылку.

Оказалось, не для всех может быть очевидно, что это два разных компонента

Какие ховеры вообще бывают

1. Изменение фона (появление подложки или изменение ее цвета)

Так это выглядит в Notion

Так это выглядит в Notion

2. Изменение бордера (появление или смена цвета)

Так себя ведет кнопка фильтров в Jira

Так себя ведет кнопка фильтров в Jira

3. Изменение цвета иконки или текста

Пример с Хабра

Пример с Хабра

4. Изменение местоположения

Можно увидеть на главной странице Яндекса

Можно увидеть на главной странице Яндекса

5. Добавление эффектов (тени, градиенты и т.д.)

Кнопка из Google календаря

Кнопка из Google календаря

6. Сложные ховеры (изменение размера, формы и т.д.)

Необычная кнопка с сайта nyc.awwwards.com

Необычная кнопка с сайта nyc.awwwards.com

На самом деле, типов ховеров может быть и больше, здесь перечислены, наверно, самые основные, и я думаю в комментариях вы сможете упомянуть еще какие-то.

Наводим порядок

Button, SelectList, Table, Chip, Lable, Switch, Pagination, навигация в левом меню

Какой тип решили использовать: Изменение фона

Кнопки в этой группе оказались самыми проблемными — у них оказалось сразу 3 типа ховера.

Мы решили сделать появление подложки единого цвета у кнопок, которые изначально не имеют никакого фона. Кнопки визуально похожие на ссылки получают важное отличие от ссылок при ховере.

Смену цвета у иконки мы оставили для активного состояния кнопки (например: tooltip или кнопка фильтров) и для того случая, когда зона наведения больше стандартного размера кнопки (например, у нас это кнопка закрытия toast)

Пример активной кнопки

Rating

Какой тип решили использовать: Изменение фона и изменение цвета иконки

В этом случае мы не стали менять тот ховер, какой был. Кнопка рейтинга похожа на обычной кнопку-иконку, у нее так же есть активное состояние, но эмоциональное значение у нее больше. Поэтому, чтобы усилить его, мы используем сразу два типа ховера.

RadioLine, CheckLine и Tab

Какой тип решили использовать: Изменение цвета текста

Приводим ховер в RadioLine, CheckLine к виду текущего ховера у табов — изменяем только цвет текста при наведении.

Убиваем двух зайцев разом: избавляемся от типа ховера с появлением обводки и улучшаем анимацию у RadioLine — в варианте с обводкой при перемещении синей подложки иногда заметно исчезающую обводку, что выглядит некрасиво.

Косяк в анимации в слоууууумо

Checkbox

Какой тип решили использовать: Изменение фона и бордера

Тут все просто: у компонента есть два состояния — выбранный и не выбранный — и соответственно два типа ховера — меняется фон и меняется бордер.

Input, MultiInput, TextArea, Select, Radiobutton

Какой тип решили использовать: Изменение бордера

Ховер на сложные элементы

У сложных элементов вроде карточки задачи на канбан-доске мы решили делать анимацию добавления эффекта при ховере — появление тени. Мы выбирали между тенью и появлением обводки, но обводку отмели, потому что обводка может частично теряться в элементе, в котором есть темные части по краям.

Но есть исключения

InputFile

У этого компонента есть два типа ховера — обычное наведение мышкой и перетаскивание файлов. Появление подложки при перетаскивании файлов это привычное поведение для такой кнопки, поэтому для обычного ховера оставляем смену цвета у иконки, чтобы эти два типа оставались разграниченными между собой.

Link Button

Не добавляем появление подложки, чтобы оставить визуальное отличие от кнопки при наведении.

Про анимацию ховеров

Практически у всех наших компонентов у ховера есть плавная анимация, но она нужна не всегда.

Без такой анимации можно обойтись в боковом меню, выпадающем списке и таблице. В том, что имеет структуру строк. Плавная анимация в таких случаях может выглядеть очень тягучей, если сделать ее слишком медленной, потому что она будет не поспевать за курсором. А если сделать ее слишком быстрой, то будет излишнее мерцание.

Но может быть и частичная анимация, например, так мы сделали у пагинации — при наведении на номер страницы подложка появляется плавно, но когда курсор уходит с нее, подложка исчезает мгновенно. Это было сделано, чтобы избежать ситуации, когда проводишь курсор по цифрам быстро и одновременно видны несколько подложек, потому что новые появляются, когда предыдущие еще не успели исчезнуть.

: hover

Хорошим паттерном в сайтостроении считается реакция элементов на действия пользователя. Например, если на элемент можно нажать, то при наведении курсора его стили должны немного меняться, как бы говоря пользователю «Нажми меня!»

Раньше интерактив можно было реализовать только при помощи JS, что сильно усложняло верстальщикам жизнь. Но сегодня у нас существует отличный помощник — псевдокласс : hover .

Пример

Ссылка в спокойном состоянии будет чёрного цвета и без подчёркивания, а при наведении курсора мыши сменит цвет на розовый, и у неё появится подчёркивание. Пользователь поймёт, что это интерактивный элемент, с которым можно взаимодействовать.

Как пишется

После любого селектора ставим двоеточие и пишем ключевое слово hover .

Селектор по тегу в состоянии : hover

Селектор по классу в состоянии : hover

Составной селектор в состоянии : hover

Селектор по id в состоянии : hover

Селектор по классу и его псевдоэлемент в состоянии : hover

Как это понять

Браузер подставляет любому элементу, на который наводится курсор, пометку в виде автоматически создаваемого класса. Мы можем стилизовать этот класс на своё усмотрение, при этом сама логика и механизм отслеживания наведения курсора будут скрыты под капотом движка браузера.

Подсказки

�� : hover можно очень круто анимировать, добавив в блок кода свойство transition ��

�� На наведения курсора может реагировать абсолютно любой элемент, необязательно ссылка или кнопка.

�� Если дизайнер не нарисовал в макете разные состояния, либо просите у него это сделать, либо пропишите стили на своё усмотрение. Но любой элемент, на который можно нажать, должен иметь как минимум стили для : hover .

На практике

Дмитрий Волков советует

�� А что если на сайт зайти с планшета, к которому подключена bluetooth-мышь? Однозначно, ховер должен работать! А если дополнительных устройств ввода нет, то, конечно, стили по наведению должны быть сброшены, чтобы избежать визуального залипания при нажатии на соответствующие элементы.

Вот удобная практика для таких случаев, она ещё и позволяет писать чуточку меньше кода.

�� Чтобы не писать дополнительные обнуления ховер-стилей для тач-устройств, состояние : hover удобно задавать внутри медиавыражений с условием по типу взаимодействия с устройством.

Пример, исключающий тач-устройства, но не полностью:

Условие any — hover : hover допускает устройства с сенсорным экраном, но только если подключено дополнительное устройство ввода с нужной функциональностью для ховера (мышь, тачпад и т. п.)

Таким образом, мы успешно задали стили по наведению на ссылку, которые не будут учтены на мобильных устройствах, но заработают, если имеется курсор.

По аналогии можно использовать и другое состояние — : active .

Алёна Батицкая советует

�� Пользователь может зайти на ваш сайт не только с десктопа, где есть мышка и её можно на что-то навести, но и с планшета или телефона, где мышкой выступает палец, а его нельзя на что-то навести, им можно только тапнуть.

Хорошая практика — сбрасывать : hover стили для тач-устройств. Иначе при нажатии на какой-то элемент ховер-стили будут залипать — телефон не знает, когда вы отводите палец в сторону.

�� Сайт смотрится аккуратнее и интереснее, если изменение стилей происходит с лёгкой анимацией, а не резко. Этот принцип взят из окружающего нас мира. Вспомните хоть одно событие, которое происходит резко, моментально, без промежуточных стадий. Не вспомните ��

Я в своей работе стараюсь делать анимацию стилей для наведения по принципу «появляется быстро, пропадает медленно». Это позволяет пользователю быстро увидеть реакцию на свои действия и не дожидаться окончания анимации.

Ссылка быстро (за 0.1 секунды) меняет фоновый цвет на голубой при наведении курсора и чуть медленнее (за 0.5 секунды) приходит обратно в исходное состояние, когда курсор уводится за пределы ссылки.

�� Если вы задаёте стили для разных состояний ссылок, то следует придерживаться определённого порядка в объявлении стилей: : link — : visited — : hover — : active .

:hover¶

Псевдокласс :hover срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.

Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link , :visited и :active , появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover до правил :link и :visited , но после :active , как определено в LVHA-порядке: :link — :visited — :hover — :active .

Псевдокласс :hover может применяться к любому псевдоэлементу.

Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.

Замечания по использованию

На сенсорных экранах :hover проблемный или не работает. В зависимости от браузера, псевдокласс :hover может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.

Синтаксис¶

Спецификации¶

Описание и примеры¶

Пример 1. Выпадающее меню¶

С псевдоклассом :hover вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:

Смотрите полный пример выпадающего меню, основанный на CSS.

Пример 2. Галерея полноразмерных изображений и превью¶

Вы можете использовать псевдокласс :hover , чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.

Пример 3¶

В данном примере псевдокласс :hover применяется к ссылке (тегу <a> ), при этом меняется цвет ссылки и фона под ней. Результат:

Результат использования псевдокласса :hover для ссылок

Пример 4¶

В данном примере псевдокласс :hover добавляется к элементу списка (тег <li> ) для создания двухуровневого меню. Результат:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *