HTML и CSS с примерами кода
Псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.
Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */ a:hover { color: orange; }
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>hover</title> <style> a:link { color: #0000d0; /* Цвет ссылок */ padding: 2px; /* Поля вокруг текста */ } a:hover { background: #786b59; /* Цвет фона под ссылкой */ color: #ffe; /* Цвет ссылки */ } </style> </head> <body> <p><a href="1.html">Ссылка 1</a></p> <p><a href="2.html">Ссылка 2</a></p> <p><a href="3.html">Ссылка 3</a></p> </body> </html>
В данном примере псевдокласс :hover
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>hover</title> <style> ul { width: 180px; /* Ширина меню */ list-style: none; /* Для списка убираем маркеры */ margin: 0; /* Нет отступов вокруг */ padding: 0; /* Убираем поля вокруг текста */ font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */ font-size: 10pt; /* Размер названий в пункте меню */ } li ul { position: absolute; /* Подменю позиционируются абсолютно */ display: none; /* Скрываем подменю */ margin-left: 165px; /* Сдвигаем подменю вправо */ margin-top: -2em; /* Сдвигаем подменю вверх */ } li a { display: block; /* Ссылка как блочный элемент */ padding: 5px; /* Поля вокруг надписи */ text-decoration: none; /* Подчеркивание у ссылок убираем */ color: #666; /* Цвет текста */ border: 1px solid #ccc; /* Рамка вокруг пунктов меню */ background-color: #f0f0f0; /* Цвет фона */ border-bottom: none; /* Границу снизу не проводим */ } li a:hover { color: #ffe; /* Цвет текста активного пункта */ background-color: #5488af; /* Цвет фона активного пункта */ } li:hover ul { /* При выделении пункта курсором мыши отображается подменю */ display: block; } .
brd { border-bottom: 1px solid #ccc; /* Линия снизу */ } </style> </head> <body> <ul> <li> <a href="russian.html">Русская кухня</a> <ul> <li><a href="linkr1.html">Бефстроганов</a></li> <li><a href="linkr2.html">Гусь с яблоками</a></li> <li> <a href="linkr3.html">Крупеник новгородский</a> </li> <li> <a href="linkr4.html" >Раки по-русски</a > </li> </ul> </li> <li> <a href="ukrainian.html">Украинская кухня</a> <ul> <li><a href="linku1.html">Вареники</a></li> <li> <a href="linku2.html">Жаркое по-харьковски</a> </li> <li> <a href="linku3.html">Капустняк черниговский</a> </li> <li> <a href="linku4.html" >Потапцы с помидорами</a > </li> </ul> </li> <li> <a href="caucasus.html">Кавказская кухня</a> <ul> <li><a href="linkc1.html">Суп-харчо</a></li> <li><a href="linkc2.html">Лилибдж</a></li> <li><a href="linkc3.html">Чихиртма</a></li> <li> <a href="linkc4.html">Шашлык</a> </li> </ul> </li> <li> <a href="asia.html" >Кухня Средней Азии</a > </li> </ul> </body> </html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
HTML и CSS с примерами кода
:hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */
a:hover {
color: orange;
}
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
a:link {
color: #0000d0; /* Цвет ссылок */
padding: 2px; /* Поля вокруг текста */
}
a:hover {
background: #786b59; /* Цвет фона под ссылкой */
color: #ffe; /* Цвет ссылки */
}
</style>
</head>
<body>
<p><a href="1.html">Ссылка 1</a></p>
<p><a href="2.html">Ссылка 2</a></p>
<p><a href="3.html">Ссылка 3</a></p>
</body>
</html>
В данном примере псевдокласс :hover
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
ul {
width: 180px; /* Ширина меню */
list-style: none; /* Для списка убираем маркеры */
margin: 0; /* Нет отступов вокруг */
padding: 0; /* Убираем поля вокруг текста */
font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */
font-size: 10pt; /* Размер названий в пункте меню */
}
li ul {
position: absolute; /* Подменю позиционируются абсолютно */
display: none; /* Скрываем подменю */
margin-left: 165px; /* Сдвигаем подменю вправо */
margin-top: -2em; /* Сдвигаем подменю вверх */
}
li a {
display: block; /* Ссылка как блочный элемент */
padding: 5px; /* Поля вокруг надписи */
text-decoration: none; /* Подчеркивание у ссылок убираем */
color: #666; /* Цвет текста */
border: 1px solid #ccc; /* Рамка вокруг пунктов меню */
background-color: #f0f0f0; /* Цвет фона */
border-bottom: none; /* Границу снизу не проводим */
}
li a:hover {
color: #ffe; /* Цвет текста активного пункта */
background-color: #5488af; /* Цвет фона активного пункта */
}
li:hover ul {
/* При выделении пункта курсором мыши отображается подменю */
display: block;
}
.
brd {
border-bottom: 1px solid #ccc; /* Линия снизу */
}
</style>
</head>
<body>
<ul>
<li>
<a href="russian.html">Русская кухня</a>
<ul>
<li><a href="linkr1.html">Бефстроганов</a></li>
<li><a href="linkr2.html">Гусь с яблоками</a></li>
<li>
<a href="linkr3.html">Крупеник новгородский</a>
</li>
<li>
<a href="linkr4.html"
>Раки по-русски</a
>
</li>
</ul>
</li>
<li>
<a href="ukrainian.html">Украинская кухня</a>
<ul>
<li><a href="linku1.html">Вареники</a></li>
<li>
<a href="linku2.html">Жаркое по-харьковски</a>
</li>
<li>
<a href="linku3.
html">Капустняк черниговский</a>
</li>
<li>
<a href="linku4.html"
>Потапцы с помидорами</a
>
</li>
</ul>
</li>
<li>
<a href="caucasus.html">Кавказская кухня</a>
<ul>
<li><a href="linkc1.html">Суп-харчо</a></li>
<li><a href="linkc2.html">Лилибдж</a></li>
<li><a href="linkc3.html">Чихиртма</a></li>
<li>
<a href="linkc4.html">Шашлык</a>
</li>
</ul>
</li>
<li>
<a href="asia.html"
>Кухня Средней Азии</a
>
</li>
</ul>
</body>
</html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
HTML и CSS с примерами кода
Псевдокласс :hover
срабатывает, когда пользователь наводит на элемент мышью, но не обязательно активирует его.
Этот стиль может переопределяться другими относящимися к ссылкам псевдоклассами, такими как :link
, :visited
и :active
, появляющимися в соответствующем порядке. Чтобы стилизировать ссылки должным образом, вам нужно вставлять правило :hover
до правил :link
и :visited
, но после :active
, как определено в LVHA-порядке: :link
— :visited
— :hover
— :active
.
Псевдокласс :hover
может применяться к любому псевдоэлементу.
Браузеры, такие как Firefox, Internet Explorer, Safari, Opera или Chrome, применяют соответствующий стиль, когда курсор (указатель мыши) наводится на элемент.
Замечания по использованию
На сенсорных экранах :hover
проблемный или не работает. В зависимости от браузера, псевдокласс :hover
может никогда не сработать, или сработать на некоторое время после нажатия на элемента, или может продолжать действовать даже остаться после того, как пользователь коснулся элемента до нажатия на другой элемент. Так как сенсорные устройства очень распространены, то веб-разработчикам очень важно не иметь контент, доступный только при наведении, так как такой контент неудобно или невозможно использовать на таких устройствах.
Синтаксис
/* Selects any <a> element when "hovered" */
a:hover {
color: orange;
}
Спецификации
Описание и примеры
Пример 1. Выпадающее меню
С псевдоклассом :hover
вы можете создавать сложные каскадные алгоритмы. Эта техника часто используется, например, чтобы создать выпадающие меню на чистом CSS (только на CSS, без использования JavaScript). Сущность этой техники — создание правил, типа следуюшего:
Смотрите полный пример выпадающего меню, основанный на CSS.
Пример 2. Галерея полноразмерных изображений и превью
Вы можете использовать псевдокласс :hover
, чтобы создать галерею изображений с полноразмерными картинками, показываемыми при наведении на них мыши. Посмотрите это демо.
Пример 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
a:link {
color: #0000d0; /* Цвет ссылок */
padding: 2px; /* Поля вокруг текста */
}
a:hover {
background: #786b59; /* Цвет фона под ссылкой */
color: #ffe; /* Цвет ссылки */
}
</style>
</head>
<body>
<p><a href="1.html">Ссылка 1</a></p>
<p><a href="2.html">Ссылка 2</a></p>
<p><a href="3.html">Ссылка 3</a></p>
</body>
</html>
В данном примере псевдокласс :hover
применяется к ссылке (тегу <a>
), при этом меняется цвет ссылки и фона под ней. Результат:
Пример 4
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>hover</title>
<style>
ul {
width: 180px; /* Ширина меню */
list-style: none; /* Для списка убираем маркеры */
margin: 0; /* Нет отступов вокруг */
padding: 0; /* Убираем поля вокруг текста */
font-family: Arial, sans-serif; /* Рубленый шрифт для текста меню */
font-size: 10pt; /* Размер названий в пункте меню */
}
li ul {
position: absolute; /* Подменю позиционируются абсолютно */
display: none; /* Скрываем подменю */
margin-left: 165px; /* Сдвигаем подменю вправо */
margin-top: -2em; /* Сдвигаем подменю вверх */
}
li a {
display: block; /* Ссылка как блочный элемент */
padding: 5px; /* Поля вокруг надписи */
text-decoration: none; /* Подчеркивание у ссылок убираем */
color: #666; /* Цвет текста */
border: 1px solid #ccc; /* Рамка вокруг пунктов меню */
background-color: #f0f0f0; /* Цвет фона */
border-bottom: none; /* Границу снизу не проводим */
}
li a:hover {
color: #ffe; /* Цвет текста активного пункта */
background-color: #5488af; /* Цвет фона активного пункта */
}
li:hover ul {
/* При выделении пункта курсором мыши отображается подменю */
display: block;
}
.
brd {
border-bottom: 1px solid #ccc; /* Линия снизу */
}
</style>
</head>
<body>
<ul>
<li>
<a href="russian.html">Русская кухня</a>
<ul>
<li><a href="linkr1.html">Бефстроганов</a></li>
<li><a href="linkr2.html">Гусь с яблоками</a></li>
<li>
<a href="linkr3.html">Крупеник новгородский</a>
</li>
<li>
<a href="linkr4.html"
>Раки по-русски</a
>
</li>
</ul>
</li>
<li>
<a href="ukrainian.html">Украинская кухня</a>
<ul>
<li><a href="linku1.html">Вареники</a></li>
<li>
<a href="linku2.html">Жаркое по-харьковски</a>
</li>
<li>
<a href="linku3.
html">Капустняк черниговский</a>
</li>
<li>
<a href="linku4.html"
>Потапцы с помидорами</a
>
</li>
</ul>
</li>
<li>
<a href="caucasus.html">Кавказская кухня</a>
<ul>
<li><a href="linkc1.html">Суп-харчо</a></li>
<li><a href="linkc2.html">Лилибдж</a></li>
<li><a href="linkc3.html">Чихиртма</a></li>
<li>
<a href="linkc4.html">Шашлык</a>
</li>
</ul>
</li>
<li>
<a href="asia.html"
>Кухня Средней Азии</a
>
</li>
</ul>
</body>
</html>
В данном примере псевдокласс :hover
добавляется к элементу списка (тег <li>
) для создания двухуровневого меню. Результат:
См. также
Ссылки
- Псевдо-класс
:hover
MDN (рус.)
html — css hover: эфект (для списка)
(!) Осторожно, пиксели.
Задолбался переделывать ваш код, сделал с нуля, наверно сможете уже допилить его к себе)
Вместо кругляшек выступают обычные блоки с border-radius: 50%. А при наведении — убираю радиус бордеров справа.
JsFiddle
.bubu {
padding: 5px 0;
border: 1px solid red; /* для наглядности */
width: 160px;
position: relative; /* У кругляшек абсолютная позиция.
А этот фрагмент у родительского блока, будет удерживать их внутри */
cursor: pointer;
box-sizing: border-box;/*Это важно, чтобы при наведении padding не сдвигал блок*/
transition: 0.5s;
}
.bubble {
width: 16px; height: 16px; position: absolute;
right: 15px; top: 6px;
background-color: #236; border-radius: 8px;
transition: 0.2s;
}
.bubu:hover .bubble {
right: 0; width: 31px;
/* собственная ширина была 16, right: 15;
* Теперь right: 0; а ширина стала 16 + 15 px
*/
border-radius: 8px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
background-color: #bc007c;
}
.bubu:hover {
padding-left: 15px;
color: #bc007c;
}
<ul>
<a href="#">
<li>Новые<div></div></li>
</a>
<li>Бубу<div></div></li>
<li>Чебурашки<div></div></li>
</ul>
P.s. вместо padding-left, padding-right по-отдельности, можно прописать сразу 4 числа в один. Начиная с верхнего padding-top, дальше всё идет по стрелке часов:
padding: верх право вниз лево;
____________
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
сокращается до:
padding: 10px 20px 30px 40px;
Та же история и с margin. А если там всего два числа, первая означает верх-вниз, второе: лево-право.
Ищем поддержку hover на css / Хабр
Доброго времени суток, дорогие хабрахабровцы!При создании адаптивной версии сайта, часто бывают ситуации, когда надо знать: поддерживает ли браузер пользователя hover, или нет. К примеру, выпадающее при наведении подменю, или же различные анимации, привязанные к событию hover — все это нужно только на ПК. На touch-устройствах поведение элементов должно меняться. Так как же задать определенные стили только для устройств с поддержкой hover на css, не забывая о кроссбраузерности?
В начале сразу хочу сказать о том, что есть js-библиотека Modernizr, которая решает эту задачу. Но… Прикручивать эту библиотеку только для определения поддержки hover, вместо написания одного медиа-запроса в css — не лучший вариант, на мой взгляд.
Но и с медиа-запросами не все так просто. Давайте посмотрим, какие есть варианты!
1. media (hover)
div{color:red;}
@media (hover){
/*Поддерживает hover*/
div{color:green;}
}
Данный медиа-запрос позволит отдельно прописывать стили только для устройств, с поддержкой hover. Но давайте посмотрим на поддержку браузерами: caniuse.com/#feat=css-media-interaction
Как видим, он не поддерживается IE и Firefox. Т.е. наш код будет воспринимать эти браузеры, как без поддержки hover. Такой вариант нам не подходит!
2. media (pointer:coarse)
div{color:green;}
@media (pointer:coarse){
/*touch-устройство*/
div{color:red;}
}
Этот запрос работает в точности наоборот, т.е. только для touch-устройств. Поддержка такая же, как и у media (hover), но т.к. IE и Firefox являются браузерами для ПК — то в них и так не должен срабатывать данный медиа-запрос.
Такое решение вполне подходит для тех случаев, когда нужно прописать стили именно для touch-устройств. Но в основном, стоит задача — прописать стили именно для hover. А это означает, что придется сначала писать стили для всех браузеров, а потом сбрасывать их в медиа-запросе. Это не только увеличивает код, но и довольно неудобно, т.к. надо дублировать каждое свойство, измененное при событии hover на элементе.
3. media (hover) +
Выбирая из двух вышеупомянутых вариантов, первый наиболее привлекательный. Была бы еще браузерная поддержка побольше…
Но, к счастью, у нас есть целый ряд медиа-запросов, которые поддерживаются только в определенных браузерах. Специфичность такой поддержки можно посмотреть на этом сайте.
Итак, данный код будет работать только в IE:
@media (min-width:0\0) {}
А этот медиа-запрос сработает только для Firefox:
@media (min--moz-device-pixel-ratio:0) {}
Так давайте же объединим все 3 запроса!
div{color:red;}
@media (hover) , (min-width:0\0) , (min--moz-device-pixel-ratio:0){
/*Поддерживает hover*/
div{color:green;}
}
В результате получаем универсальный медиа-запрос, срабатывающий при поддержке hover.
Запрос поддерживается во всех основных браузерах, и как бонус, корректно работает на Blackberry и в Opera Mini (чего не было во 2 варианте).
Демо сравнения 3х подходов. Зеленый цвет = поддержка hover:
Hover-эффекты для круглых элементов с использованием CSS Transitions
В сегодняшнем уроке мы будем экспериментировать с hover-эффектами для круглых элементов. Поскольку сейчас у нас есть возможность использовать свойство border-radius, мы можем создавать круглые формы, и они все чаще появляются в качестве элементов дизайна на веб-сайтах. Один из вариантов использования, который мне более всего нравится, это круглые миниатюры, которые выглядят гораздо интереснее, чем обычные, прямоугольные. И сейчас мы собираемся создать несколько необычных эффектов при наведении на такие элементы!
Пожалуйста, обратите внимание: результат этого урока будет работать, как задумано, только в браузерах, которые поддерживают соответствующие свойства CSS.
В примерах кода в статье мы будем опускать префиксы браузеров, но вы, конечно, можете найти их в исходных файлах.
Итак, давайте начнем!
HTML
Для большинства примеров, мы будем использовать следующую структуру:
<ul>
<li>
<div>
<div>
<h4>Use what you have</h4>
<p>by Angela Duncan <a href=»http://drbl.in/eOPF»>View on Dribbble</a></p>
</div>
</div>
</li>
<li>
<div>
<div>
<h4>Common Causes of Stains</h4>
<p>by Antonio F. Mondragon <a href=»http://drbl.in/eKMi»>View on Dribbble</a></p>
</div>
</div>
</li>
<li>
<div>
<div>
<h4>Pink Lightning</h4>
<p>by Charlie Wagers <a href=»http://drbl.in/ekhp»>View on Dribbble</a></p>
</div>
</div>
</li>
</ul>
Хотя мы могли бы использовать изображения здесь, мы дадим себе немного больше свободы, и используем фоновые изображения вместо картинок. Мы определим их в классах, которые начинаются с «ch-img-«. Кроме того, у нас будут блоки с описанием отдельных элементов, и их названием.
Теперь, давайте создадим некоторые hover-эффекты!
CSS
Давайте определим общие стили для списка и элементов списка:
.ch-grid {
margin: 20px 0 0 0;
padding: 0;
list-style: none;
display: block;
text-align: center;
width: 100%;
}
.ch-grid:after,
.ch-item:before {
content: »;
display: table;
}
.ch-grid:after {
clear: both;
}
.ch-grid li {
width: 220px;
height: 220px;
display: inline-block;
margin: 20px;
}
Мы можем отцентрировать элемент списка, используя display: inline-block и определив свойство text-align.
Хак clearfix от Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/
Некоторые из примеров будут иметь немного другую структуру, но мы рассмотрим это в каждом конкретном примере более подробно.
Пример 1
В первом примере будем масштабировать описание, увеличивая его до размеров элемента, и мы также будем анимировать внутреннюю тень самого элемента. Итак, давайте определим положение элемента, тень для него и переход:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
overflow: hidden;
position: relative;
cursor: default;
box-shadow:
inset 0 0 0 16px rgba(255,255,255,0.6),
0 1px 2px rgba(0,0,0,0.1);
transition: all 0.4s ease-in-out;
}
Мы определим два класса для элемента: один — это ch-item, а другой будет использоваться для определения фонового изображения:
.ch-img-1 {
background-image: url(../images/1.jpg);
}
.ch-img-2 {
background-image: url(../images/2.jpg);
}
.ch-img-3 {
background-image: url(../images/3.jpg);
}
Описание элемента будет позиционироваться абсолютно, и мы зададим ему полупрозрачный фон, установив значение для RGBA. Его прозрачность будет равна 0, и мы будем уменьшать масштаб его также до 0:
.ch-info {
position: absolute;
background: rgba(63,147,147, 0.8);
width: inherit;
height: inherit;
border-radius: 50%;
overflow: hidden;
opacity: 0;
transition: all 0.4s ease-in-out;
transform: scale(0);
}
Заголовок элемента будет иметь некоторые отступы и сглаженные тени для текста:
.ch-info h4 {
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 22px;
margin: 0 30px;
padding: 45px 0 0 0;
height: 140px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
Тег P имеет непрозрачность равную 0 и переход (мы хотим, чтобы он появлялся при наведении курсора мыши, но с задержкой):
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
opacity: 0;
transition: all 1s ease-in-out 0.4s;
}
Ссылка будет в верхнем регистре, и мы поменяем цвет при наведении на желтый:
.ch-info p a {
display: block;
color: rgba(255,255,255,0.7);
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: rgba(255,242,34, 0.8);
}
А теперь, самое интересное, что будет происходить при наведении мыши!
Этот элемент будет анимирован, и его тень изменит радиус с 16px до 1px:
.ch-item:hover {
box-shadow:
inset 0 0 0 1px rgba(255,255,255,0.1),
0 1px 2px rgba(0,0,0,0.1);
}
Описание будет плавно появляться и масштабироваться до 1:
.ch-item:hover .ch-info {
transform: scale(1);
opacity: 1;
}
Параграф будет просто появляться (с задержкой):
.ch-item:hover .ch-info p {
opacity: 1;
}
С первым примером мы закончили! Давайте взглянем на следующий.
Пример 2
HTML структура в данном случае такая же, как и в первом примере.
Здесь мы будем использовать тень для элемента, чтобы заполнить наш круг и чтобы тень служила фоном для описания.
Итак, здесь нет ничего особенного, только тень имеет несколько строк значений:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
cursor: default;
box-shadow:
inset 0 0 0 0 rgba(200,95,66, 0.4),
inset 0 0 0 16px rgba(255,255,255,0.6),
0 1px 2px rgba(0,0,0,0.1);
transition: all 0.4s ease-in-out;
}
Изображения для фона:
.ch-img-1 {
background-image: url(../images/4.jpg);
}
.ch-img-2 {
background-image: url(../images/5.jpg);
}
.ch-img-3 {
background-image: url(../images/6.jpg);
}
Описание будет опять же спрятано:
.ch-info {
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
overflow: hidden;
opacity: 0;
transition: all 0.4s ease-in-out;
transform: scale(0);
backface-visibility: hidden;
}
Зададим стили для типографских элементов:
.ch-info h4 {
color: #fff;
text-transform: uppercase;
position: relative;
letter-spacing: 2px;
font-size: 22px;
margin: 0 30px;
padding: 65px 0 0 0;
height: 110px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
.ch-info p a {
display: block;
color: rgba(255,255,255,0.7);
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: rgba(255,242,34, 0.8);
}
При наведении мы анимируем внутреннюю тень элемента (она будет у нас красноватая) до 110px в радиусе. Она покроет весь круг:
.ch-item:hover {
box-shadow:
inset 0 0 0 110px rgba(200,95,66, 0.4),
inset 0 0 0 16px rgba(255,255,255,0.8),
0 1px 2px rgba(0,0,0,0.1);
}
Мы увеличим описание, чтобы оно появилось:
.ch-item:hover .ch-info {
opacity: 1;
transform: scale(1);
}
Пример 3
В этом примере мы поиграем с вращением. Структура будет немного отличаться от первых двух примеров, поскольку мы должны добавить второй блок для эскиза. Таким образом, элемент будет выглядеть следующим образом:
<li>
<div>
<div>
<h4>Music poster</h4>
<p>by Jonathan Quintin <a href=»http://drbl.in/eGjw»>View on Dribbble</a></p>
</div>
<div></div>
</div>
</li>
Блок элемента будет иметь такие же стили, как и раньше (с тонкой тенью):
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
cursor: default;
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
Для эскиза определим свойство transform-origin и переходы. Это будет элемент, который мы хотим, чтобы он поворачивался вниз при наведении курсора мыши, и при этом раскрывал описание элементов:
.ch-thumb {
width: 100%;
height: 100%;
border-radius: 50%;
overflow: hidden;
position: absolute;
box-shadow: inset 0 0 0 15px rgba(255,255,255, 0.5);
transform-origin: 95% 40%;
transition: all 0.3s ease-in-out;
}
С помощью псевдо-класса :after мы создадим небольшую медную защелку с радиальным градиентом:
.ch-thumb:after {
content: »;
width: 8px;
height: 8px;
position: absolute;
border-radius: 50%;
top: 40%;
left: 95%;
margin: -4px 0 0 -4px;
background: radial-gradient(ellipse at center, rgba(14,14,14,1) 0%,rgba(125,126,125,1) 100%);
box-shadow: 0 0 1px rgba(255,255,255,0.9);
}
Давайте определим фоновые изображения для каждого элемента:
.ch-img-1 {
background-image: url(../images/7.jpg);
z-index: 12;
}
.ch-img-2 {
background-image: url(../images/8.jpg);
z-index: 11;
}
.ch-img-3 {
background-image: url(../images/9.jpg);
z-index: 10;
}
Описание элемента будет иметь следующие стили:
.ch-info {
position: absolute;
width: inherit;
height: inherit;
border-radius: 50%;
overflow: hidden;
background: #c9512e url(../images/noise.png);
box-shadow: inset 0 0 0 5px rgba(0,0,0,0.05);
}
Типографские элементы стилизованны следующим образом:
.ch-info h4 {
color: #fff;
text-transform: uppercase;
position: relative;
letter-spacing: 2px;
font-size: 18px;
margin: 0 60px;
padding: 22px 0 0 0;
height: 85px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
Ссылка будет в виде маленького кружка, который должен двигаться вправо при наведении:
.ch-info p a {
display: block;
color: #333;
width: 80px;
height: 80px;
background: rgba(255,255,255,0.3);
border-radius: 50%;
color: #fff;
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 24px;
margin: 7px auto 0;
font-family: ‘Open Sans’, Arial, sans-serif;
opacity: 0;
transition:
transform 0.3s ease-in-out 0.2s,
opacity 0.3s ease-in-out 0.2s,
background 0.2s linear 0s;
transform: translateX(60px) rotate(90deg);
}
.ch-info p a:hover {
background: rgba(255,255,255,0.5);
}
Так как мы хотим, чтобы движение и изменение прозрачности происходили с задержкой, но фон изменялся без неё, мы разделим переходы.
При наведении мы повернем эскиз и переместим/повернем ссылку:
.ch-item:hover .ch-thumb {
box-shadow: inset 0 0 0 15px rgba(255,255,255, 0.5), 0 1px 3px rgba(0,0,0,0.2);
transform: rotate(-110deg);
}
.ch-item:hover .ch-info p a{
opacity: 1;
transform: translateX(0px) rotate(0deg);
}
Пример 4
Четвертый пример будет включать в себя элементы 3D. Таким образом, нам нужно немного изменить структуру, чтобы иметь контейнер для перспективы и лицевую и обратную сторону. Таким образом, элемент списка будет выглядеть следующим образом:
<li>
<div>
<div>
<div>
<div></div>
<div>
<h4>Bears Type</h4>
<p>by Josh Schott <a href=»http://drbl.in/ewUW»>View on Dribbble</a></p>
</div>
</div>
</div>
</div>
</li>
Как вы можете видеть, мы добавили фоновое изображение для блока элемента, а также лицевой части переворачивающегося элемента.
Трюк заключается в том, чтобы задать такой же фон для ch-info-wrap, как и на остальной странице. Это создаст иллюзию, что наш элемент имеет отверстие.
Этот элемент будет иметь обычные стили:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
cursor: default;
}
Дополнительный блок будет использоваться для перспективы, и мы добавим ему переход для тени:
.ch-info-wrap{
position: absolute;
width: 180px;
height: 180px;
border-radius: 50%;
perspective: 800px;
transition: all 0.4s ease-in-out;
top: 20px;
left: 20px;
background: #f9f9f9 url(../images/bg.jpg);
box-shadow:
0 0 0 20px rgba(255,255,255,0.2),
inset 0 0 3px rgba(115,114, 23, 0.8);
}
Блок с классом ch-info будет иметь значение preserve-3d для transform-style, и мы зададим ему переход, так как этот элемент будет вращаться в 3D:
.ch-info{
position: absolute;
width: 180px;
height: 180px;
border-radius: 50%;
transition: all 0.4s ease-in-out;
transform-style: preserve-3d;
}
Лицевая и обратная стороны будут иметь следующие стили:
.ch-info > div {
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background-position: center center;
backface-visibility: hidden;
}
Обратная сторона будет поворачиваться, так что мы не должны видеть ее изначально:
.ch-info .ch-info-back {
transform: rotate3d(0,1,0,180deg);
background: #000;
}
И снова, фоновые изображения:
.ch-img-1 {
background-image: url(../images/10.jpg);
}
.ch-img-2 {
background-image: url(../images/11.jpg);
}
.ch-img-3 {
background-image: url(../images/12.jpg);
}
… и типографские элементы:
.ch-info h4 {
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 14px;
margin: 0 15px;
padding: 40px 0 0 0;
height: 90px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
.ch-info p a {
display: block;
color: rgba(255,255,255,0.7);
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: rgba(255,242,34, 0.8);
}
При наведении, мы будем изменять тени враппера и поворачивать так, чтобы мы видели обратную сторону:
.ch-item:hover .ch-info-wrap {
box-shadow:
0 0 0 0 rgba(255,255,255,0.8),
inset 0 0 3px rgba(115,114, 23, 0.8);
}
.ch-item:hover .ch-info {
transform: rotate3d(0,1,0,-180deg);
}
Пример 5
В этом примере мы хотим уменьшить внутреннюю часть эскиза до 0 и сделать, чтобы описание элементов появлялось и масштабировалось до 1.
Структура пятого примера будет такой же, как и в предыдущем примере.
Этот элемент имеет обычные стили:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
cursor: default;
}
Враппер и блок с описанием будут иметь следующие общие стили:
.ch-info-wrap,
.ch-info{
position: absolute;
width: 180px;
height: 180px;
border-radius: 50%;
}
Давайте еще раз используем трюк, как и в прошлом примере, и установим такой же фон для враппера, что и для страницы:
.ch-info-wrap {
top: 20px;
left: 20px;
background: #f9f9f9 url(../images/bg.jpg);
box-shadow:
0 0 0 20px rgba(255,255,255,0.2),
inset 0 0 3px rgba(115,114, 23, 0.8);
}
Общие стили для «переднего» и «заднего» блока:
.ch-info > div {
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background-position: center center;
}
«Передний» будет иметь переход (он будет уменьшаться и исчезать):
.ch-info .ch-info-front {
transition: all 0.6s ease-in-out;
}
«Задний» блок, который содержит описание, будет иметь изначально прозрачность равную 0, а затем будет увеличиваться до 1.5:
.ch-info .ch-info-back {
opacity: 0;
background: #223e87;
pointer-events: none;
transform: scale(1.5);
transition: all 0.4s ease-in-out 0.2s;
}
Фоновые изображения и типографские элементы будут иметь такие же стили как и в предыдущих примерах, только с несколькими разными цветами:
.ch-img-1 {
background-image: url(../images/13.jpg);
}
.ch-img-2 {
background-image: url(../images/14.jpg);
}
.ch-img-3 {
background-image: url(../images/15.jpg);
}
.ch-info h4 {
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 18px;
margin: 0 15px;
padding: 40px 0 0 0;
height: 80px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px 0;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
.ch-info p a {
display: block;
color: #e7615e;
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: #fff;
}
При наведении мы уменьшим внутреннюю часть эскиза до 0 и установим непрозрачность равную 0 для «переднего» блока.
.ch-item:hover .ch-info-front {
transform: scale(0);
opacity: 0;
}
Та часть, которая содержит описание, будет изменена в размере и появится на экране.
.ch-item:hover .ch-info-back {
transform: scale(1);
opacity: 1;
pointer-events: auto;
}
Пример 6
В этом примере мы хотим перевернуть внутреннюю часть миниатюры вниз, для того, чтобы показать описание. HTML-код будет таким же, как и в предыдущих двух примерах.
Элемент будет иметь такие же стили, как и раньше:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
cursor: default;
}
Общие стили для враппера и элемента с описанием:
.ch-info-wrap,
.ch-info{
position: absolute;
width: 180px;
height: 180px;
border-radius: 50%;
transition: all 0.4s ease-in-out;
}
Оболочка будет иметь перспективу:
.ch-info-wrap {
top: 20px;
left: 20px;
background: #f9f9f9 url(../images/bg.jpg);
box-shadow:
0 0 0 20px rgba(255,255,255,0.2),
inset 0 0 3px rgba(115,114, 23, 0.8);
perspective: 800px;
}
Элементу info установим следующие стили для трансформации:
.ch-info {
transform-style: preserve-3d;
}
Передняя и задняя стороны будут иметь переход. Обратите внимание, что на этот раз мы не будем устанавливать backface-visibility: hidden, так как мы хотим показать обратную сторону внутренней части эскиза, когда она переворачивается вниз:
.ch-info > div {
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background-position: center center;
transition: all 0.6s ease-in-out;
}
Давайте установим правильный transform-origin, так чтобы мы могли открыть его вниз:
.ch-info .ch-info-front {
transform-origin: 50% 100%;
z-index: 100;
box-shadow:
inset 2px 1px 4px rgba(0,0,0,0.1);
}
Мы установим RGBA значение с непрозрачностью равную 0 для фона элемента с описанием:
.ch-info .ch-info-back {
background: rgba(230,132,107,0);
}
И обычные стили для других элементов:
.ch-img-1 {
background-image: url(../images/16.jpg);
}
.ch-img-2 {
background-image: url(../images/17.jpg);
}
.ch-img-3 {
background-image: url(../images/18.jpg);
}
.ch-info h4 {
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 14px;
margin: 0 25px;
padding: 40px 0 0 0;
height: 90px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
.ch-info p a {
display: block;
color: rgba(255,255,255,0.7);
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: rgba(255,242,34, 0.8);
}
При наведении, мы будем вращать переднюю часть и немного анимировать тень.
.ch-item:hover .ch-info-front {
transform: rotate3d(1,0,0,-180deg);
box-shadow:
inset 0 0 5px rgba(255,255,255,0.2),
inset 0 0 3px rgba(0,0,0,0.3);
}
.ch-item:hover .ch-info-back {
background: rgba(230,132,107,0.6);
}
Пример 7
Последний пример будет в виде вращающегося куба, где мы открываем описание, поворачивая его на бок. Так как мы будем вращать каждую из граней, нам не нужна дополнительная оболочка. Итак, наш HTML-код будет выглядеть следующим образом:
<li>
<div>
<div>
<div></div>
<div>
<h4>Mouse</h4>
<p>by Alexander Shumihin <a href=»http://drbl.in/eAoj»>View on Dribbble</a></p>
</div>
</div>
</div>
</li>
Мы определим для элемента свойство perspective:
.ch-item {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
cursor: default;
perspective: 900px;
}
Для элемента с классом ch-info понадобится preserve-3d:
.ch-info{
position: absolute;
width: 100%;
height: 100%;
transform-style: preserve-3d;
}
Лицевая и обратная сторона будут иметь переходы, transform-origin будет установлен как 50% 0%:
.ch-info > div {
display: block;
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
background-position: center center;
transition: all 0.4s linear;
transform-origin: 50% 0%;
}
Давайте создадим симпатичную тень для передней части:
.ch-info .ch-info-front {
box-shadow: inset 0 0 0 16px rgba(0,0,0,0.3);
}
Противоположная сторона будет спрятана изначально:
.ch-info .ch-info-back {
transform: translate3d(0,0,-220px) rotate3d(1,0,0,90deg);
background: #000;
opacity: 0;
}
Зададим обычные стили для фоновых изображений и текстовых элементов:
.ch-img-1 {
background-image: url(../images/19.jpg);
}
.ch-img-2 {
background-image: url(../images/20.jpg);
}
.ch-img-3 {
background-image: url(../images/21.jpg);
}
.ch-info h4 {
color: #fff;
text-transform: uppercase;
letter-spacing: 2px;
font-size: 24px;
margin: 0 15px;
padding: 60px 0 0 0;
height: 110px;
font-family: ‘Open Sans’, Arial, sans-serif;
text-shadow:
0 0 1px #fff,
0 1px 2px rgba(0,0,0,0.3);
}
.ch-info p {
color: #fff;
padding: 10px 5px;
font-style: italic;
margin: 0 30px;
font-size: 12px;
border-top: 1px solid rgba(255,255,255,0.5);
}
.ch-info p a {
display: block;
color: rgba(255,255,255,0.7);
font-style: normal;
font-weight: 700;
text-transform: uppercase;
font-size: 9px;
letter-spacing: 1px;
padding-top: 4px;
font-family: ‘Open Sans’, Arial, sans-serif;
}
.ch-info p a:hover {
color: rgba(255,242,34, 0.8);
}
Мы будем использовать translate3d, чтобы перемещать лицевую часть по оси Y нашего 3D пространства, и rotate3d, чтобы на самом деле повернуть её. Мы также постепенно её спрячем, чтобы какая-либо часть не была видна впоследствии:
.ch-item:hover .ch-info-front {
transform: translate3d(0,280px,0) rotate3d(1,0,0,-90deg);
opacity: 0;
}
Противоположная сторона будет поворачиваться «назад» до 0 градусов (первоначально она была повернута вниз):
.ch-item:hover .ch-info-back {
transform: rotate3d(1,0,0,0deg);
opacity: 1;
}
И вот и всё!
Надеюсь, вам понравилось, и эти эффекты будут вам полезны!
Демонстрация
Скачать исходные файлы
Перевод статьи с tympanus.net/codrops
Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом
Решение проблемы с CSS :hover
:hover — псевдокласс, определяющий стиль элемента при наведении на него указателя.
Проблемы с псевдоклассом :hover начались еще с тех пор, как на сенсорных устройствах был установлен первый браузер. Конечно, проблемы пытались решить и решали, но полноценным решением это вряд ли можно было назвать. Однако с новыми медиазапросами (Media Queries) 4 уровня проблема, кажется, решена окончательно.
“Хм … а в чем, собственно говоря, заключается проблема?”
Допустим, вы просто добавили псевдокласс :hover к элементу вашей веб-страницы. Следовательно, когда пользователь наводит курсор мыши на этот элемент, то он активирует некоторые правила CSS и меняет свой внешний вид. Легче легкого!
Однако на сенсорном экране с псевдоклассом :hover возникают проблемы: после того, как нажатие выполнено, эффект наведения закрепляется на элементе. Более того, это происходит, даже тогда, когда элемента не касались напрямую. Например, когда пользователь в процессе прокрутки страницы задевает элемент и его отображение меняется, согласно CSS правилам :hover.
Такая же проблема возникает при перетаскивании пользователем элементов с :hover по веб-странице. Это происходит, потому что технически — ваш палец (или стилус) и есть указатель, который и активирует :hover. Но проблема состоит в том, что даже после прекращения перетаскивания элемента — эффекты, активированные :hover, остаются.
Подобное поведение элементов может запутать пользователя и подобная практика будет отрицательно сказываться на вашем продукте. Эту проблему необходимо как-то решить.
“Не может же быть, чтобы эту проблему не пытались как-то решить…”
Да, определенные решения выдвигались. Лучшим из них было использование JavaScript для определения наличия сенсорного экрана и последующее применение класса к body
. После чего, добавляя к какому-либо элементу псевдокласс :hover, будет происходить явное обращение к этому классу.
body.nontouch nav a:hover {
background: yellow;
}
Однако подобное решение имеет несколько недостатков:
- Разработчик может создать JS-сценарий обнаружения, который работает сегодня, но что с ним будет через пару месяцев, когда появится какая-то новая технология? Ноутбуки с сенсорными экранами? Съемные сенсорные экраны? Apple Pencil? Никто не хотел бы беспокоиться об этом во время разработки.
- Использование основанного на компонентах JS-фреймворка с инкапсулированными стилями неудобно. Так как каждый раз, когда активируется :hover, стили этого элемента должны ссылаться на этот глобальный класс.
- Это решение может работать по-разному на разных устройствах. Возможно, что для специальных устройств придется придумывать специальное решение. Однако должен быть стандартизированный способ, работающий на всех устройствах.
Media Queries Level 4
Медиазапросы великолепны. Они в одиночку внедрили адаптивный веб-дизайн и их по праву считают краеугольным камнем современной мобильной веб-разработки. Организация W3C добавила функции взаимодействия с мультимедиа в качестве рекомендации для L4 Media Queries, которые мы можем использовать для распознавания устройств с сенсорным экраном.
Четвертый уровень медиазапросов включает в себя: hover
,any-hover
, pointer
, any-pointer
. Они предоставляют информацию о возможности применения hover
и типе пользовательского ввода. Например, @media (hover: hover)
будет true, если hover
элемента активируется курсором мыши. А @media (any-pointer: coarse)
будет true, если какой-либо ввод имеет ограниченную точность (например, касание по сенсору). Эти мультимедийные функции предоставляют достаточно информации для правильного взаимодействия с hover
.
Одна из проблем заключается в том, что медиазапросы на данный момент являются рекомендательными. Это означает, что они могут измениться или даже быть удалены в любое время. Помните об этом при работе с ними. На данный момент это определенно работает, и мы возлагаем большие надежды на эти спецификации. Тот факт, что все основные браузеры реализовали эти запросы (кроме, конечно, IE), делает наше будущее еще более оптимистичным.
«Так что же делать?»
С точки зрения разработчика, мы ищем решение, которое будет наиболее простым в использовании и обслуживании.
С точки зрения UX, мы ищем решение, которое было бы наиболее приятным для пользователя.
Это означает, что на устройствах с сенсорным экраном не будут использоваться hover-эффекты. Особый случай здесь — это ноутбуки с сенсорными экранами. Однако мы можем предполагать, что на таких ноутбуках большую часть времени используется тачпад или компьютерная мышь. Даже если hover-эффект зависает, пользователь может легко использовать мышь / сенсорную панель, чтобы устранить проблему. К счастью, ноутбуки со съемными сенсорными экранами переходят в режим планшета после отсоединения. А это значит, что медиазапрос все правильно обработает и никаких проблем не возникнет.
Вот тестовый сайт, на котором вы можете протестировать свое устройство, чтобы узнать, какие из этих медиазапросов применимы к нему, а также просмотреть настройки некоторых наиболее популярных устройств. Браузеры на Android имеют некоторые несоответствия, но другие устройства, кажется, разбираются с ними.
Перевод статьи Mezo Istvan: Finally, a CSS only solution to :hover on touchscreens
CSS-переходов и анимации наведения, интерактивное руководство
Мир веб-анимации превратился в бескрайние джунгли инструментов и технологий. Библиотеки, такие как GSAP и Framer Motion и React Spring, появились, чтобы помочь нам добавить движение в DOM.
Однако наиболее фундаментальной и важной частью является скромный переход на CSS. Это первый инструмент анимации, который изучает большинство разработчиков интерфейса, и это рабочая лошадка. Даже самые обветренные ветераны анимации по-прежнему часто обращаются к этому инструменту.
В этой теме есть удивительная глубина. В этом уроке мы углубимся и узнаем немного больше о переходах CSS и о том, как мы можем использовать их для создания сочных, отточенных анимаций.
Целевая аудиторияЭто руководство предназначено для разработчиков с любым уровнем опыта. Его можно рассматривать как «CSS-переходы 101». Тем не менее, я добавил несколько интересных и малоизвестных лакомых кусочков — независимо от вашего уровня опыта, держу пари, вы чему-то научитесь!
Главный компонент, который нам нужен для создания анимации, — это изменяющийся CSS.
Вот пример кнопки, которая перемещается при наведении курсора, без анимации :
В этом фрагменте кода используется псевдокласс : hover
, чтобы указать дополнительное объявление CSS, когда указатель мыши находится поверх нашей кнопки, аналогично onMouseEnter
событие в JavaScript.
Чтобы сдвинуть элемент вверх, мы используем преобразование : translateY (-10px)
. Хотя для этого мы могли бы использовать margin-top
, преобразование : перевод
— лучший инструмент для этой работы.Позже мы увидим почему.
По умолчанию изменения в CSS происходят мгновенно. В мгновение ока наша кнопка телепортировалась на новое место! Это несовместимо с миром природы, где все происходит постепенно.
Мы можем указать браузеру интерполировать из одного состояния в другое с метко названным свойством transition
:
transition
может принимать несколько значений, но требуются только два:
Имя свойства, которое мы хотим анимировать
Продолжительность анимации
Если вы планируете анимировать несколько свойств, вы можете передать его в виде списка, разделенного запятыми:
Выбор всех свойств transition-property
принимает особое значение: все
.Когда все
указаны, любое изменяемое свойство CSS будет перенесено.
Может возникнуть соблазн использовать это значение, поскольку оно экономит нам много времени при вводе при анимации нескольких свойств, но я рекомендую не использовать его.
По мере развития вашего продукта вы (или кто-то из вашей команды), вероятно, в какой-то момент в будущем обновите этот код. Неожиданная анимация могла проскользнуть.
Анимация похожа на соль: слишком много ее портит блюдо.Стоит быть действительно точным с анимируемыми свойствами.
Когда мы говорим элементу перейти из одной позиции в другую, браузеру необходимо определить, как должен выглядеть каждый «промежуточный» фрейм.
Например: предположим, что мы перемещаем элемент слева направо в течение 1 секунды. Плавная анимация должна работать со скоростью 60 кадров в секунду *, а это значит, что нам нужно найти 60 отдельных позиций между началом и концом.
Давайте начнем с того, что они будут равномерно распределены:
Щелкните меня!
Чтобы прояснить, что здесь происходит: каждый блеклый кружок представляет момент времени.Когда круг перемещается слева направо, это кадры, которые были показаны пользователю. Это как флипбук.
В этой анимации мы используем линейную функцию синхронизации . Это означает, что элемент движется в постоянном темпе; наш круг перемещается на одинаковую величину каждый кадр.
В CSS доступно несколько функций времени. Мы можем указать, какой из них мы хотим использовать со свойством transition-timer-function
:
Или мы можем передать его напрямую в сокращенное свойство transition
:
linear
редко бывает лучшим выбором — в конце концов, в реальном мире почти ничего не движется в эту сторону *.Хорошая анимация имитирует мир природы, поэтому мы должны выбрать что-то более органичное!
Давайте пробежимся по нашим вариантам.
Ссылка на эту товарную позицию
легкость выхода легкость выхода
врывается, как дикий бык, но у него заканчивается энергия. В конце концов, он корчит, как сонная черепаха.
Попробуйте прокрутить по временной шкале; обратите внимание, насколько резким является движение в первых нескольких кадрах и насколько оно становится незаметным к концу.
Если бы мы изобразили смещение элемента во времени, это выглядело бы примерно так:
Когда бы вы использовали смещения
? Чаще всего используется, когда что-то поступает за пределами экрана (например,модальное появление). Создается впечатление, что что-то ворвалось издалека и останавливается перед пользователем.
Ссылка на эту товарную позицию
easy-in easy-in
неудивительно, что это противоположность easy-out
. Он запускается медленно и ускоряется:
Как мы видели, easy-out
полезен для вещей, которые попадают в поле зрения вне экрана. easy-in
, естественно, пригодится для обратного: перемещения чего-либо за пределы области просмотра.
Эта комбинация полезна, когда что-то входит и выходит из области просмотра, например, из модального окна. Вскоре мы рассмотрим, как смешивать и согласовывать функции синхронизации.
Обратите внимание, что easy-in
в значительной степени полезно исключительно для анимаций, которые заканчиваются закадровым или невидимым элементом; в противном случае резкая остановка может вызвать раздражение.
Ссылка на данную товарную позицию
легкость входа-выхода Далее, легкость входа-выхода
. Это комбинация двух предыдущих функций синхронизации:
Эта функция синхронизации является симметричной .У него равное количество ускорений и замедлений.
Я считаю эту кривую наиболее полезной для всего, что происходит в цикле (например, когда элемент постепенно появляется и исчезает, снова и снова).
Это большой шаг вперед по сравнению с linear
, но перед тем, как вы начнете использовать его во всем, давайте рассмотрим еще один вариант.
Если бы у меня была своя точка зрения от авторов языка CSS, когда дело доходит до переходов, так это то, что легкость
плохо названа. Это совсем не описательно; буквально все функции тайминга в той или иной степени являются облегчениями!
Если не считать придирки, easy
просто потрясающе.В отличие от для легкости установки
, он несимметричен; Он имеет кратковременное ускорение и замедление лота .
легкость
— значение по умолчанию — если вы не укажете функцию синхронизации, будет использоваться легкость
. Честно говоря, мне это кажется правильным. easy
— отличный вариант в большинстве случаев. Если элемент перемещается, но не входит в область просмотра и не выходит из нее, обычно хорошим выбором будет легкость
.
Важное замечание обо всех этих демонстрациях: время постоянно .Функции синхронизации описывают, как значение должно переходить от 0 до 1 за фиксированный интервал времени, а не , а , как быстро должна завершиться анимация. Некоторые функции синхронизации могут казаться быстрее или медленнее, но в этих примерах все они выполняются ровно за 1 секунду.
Ссылка на этот заголовок
Пользовательские кривыеЕсли предоставленные встроенные параметры не соответствуют вашим потребностям, вы можете определить свою собственную кривую плавности, используя функцию синхронизации кубической кривой Безье!
Все значения, которые мы видели до сих пор, на самом деле являются просто предустановками для этой функции кубической кривой Безье
.Требуется 4 числа, представляющих 2 контрольные точки.
Кривые Безье действительно хороши, но они выходят за рамки этого руководства. Но я скоро напишу о них больше!
А пока вы можете начать создавать свои собственные временные функции Безье, используя этот замечательный помощник от Lea Verou:
Как только вы придумаете кривую анимации, которая вас устраивает, нажмите «Копировать» вверху и вставьте ее в ваш CSS!
Вы также можете выбрать из этого расширенного набора функций синхронизации.Но будьте осторожны: некоторые из наиболее диковинных опций не работают в CSS.
Начиная с пользовательских кривых Безье, может быть трудно придумать кривую, которая кажется естественной. Однако после некоторой практики это невероятно выразительный инструмент .
Мне пора прийти в себяЯ должен признаться: приведенные выше демонстрации, демонстрирующие различные функции синхронизации, были преувеличены.
По правде говоря, временные функции, такие как easy-in
, более тонкие, чем изображено, но я хотел подчеркнуть эффект, чтобы облегчить понимание.Это стало возможным благодаря функции синхронизации кубической кривой Безье
!
Ранее мы упоминали, что анимация должна работать со скоростью 60 кадров в секунду. Однако когда мы проводим вычисления, мы понимаем, что это означает, что у браузера есть только 16,6 миллисекунды для рисования каждого кадра. На самом деле времени совсем немного; для справки, моргание занимает около 100-300 мсек!
Если наша анимация слишком затратна в вычислительном отношении, она будет казаться рывкой и заиканием. Рамки будут выпадать, так как устройство не успевает.
Убедитесь в этом сами, настроив новый элемент управления «Число кадров в секунду»:
На практике низкая производительность часто проявляется в виде переменной частоты кадров , так что это не идеальная симуляция.
Анимация — это удивительно глубокая и интересная область, выходящая далеко за рамки этого вводного руководства. Но давайте рассмотрим абсолютно важные, важные моменты:
-
Некоторые свойства CSS намного дороже анимировать, чем другие.Например, высота
-
Другие свойства, такие как
background-color
, анимировать довольно дорого. Они не влияют на макет, но требуют свежего слоя краски на каждой раме, что недешево. -
Два свойства —
преобразовать
и непрозрачностьwidth
илиleft
, можно значительно улучшить , переместив его вtransform
(хотя не всегда можно добиться того же эффекта). -
Обязательно протестируйте анимацию на самом низком устройстве, на которое нацелен ваш сайт / приложение. Ваша машина для разработки, вероятно, во много раз быстрее ее.
Если вам интересно узнать больше о производительности анимации, я выступал на эту тему на React Rally.Он углубляется в эту тему:
Ссылка на этот заголовок
Аппаратное ускорениеВ зависимости от вашего браузера и ОС вы могли заметить любопытное небольшое несовершенство в некоторых из предыдущих примеров:
Pay close внимание к буквам. Обратите внимание, как они выглядят слегка глючными в начале и в конце перехода, как будто все встало на свои места?
Это происходит из-за переключения между CPU и GPU компьютера.Позволь мне объяснить.
Когда мы анимируем элемент, используя преобразование
и непрозрачность
, браузер иногда пытается оптимизировать эту анимацию. Вместо того, чтобы растрировать пиксели в каждом кадре, он передает все на графический процессор в виде текстуры. Графические процессоры очень хорошо справляются с подобными преобразованиями на основе текстур, и в результате мы получаем очень гладкую и производительную анимацию. Это известно как «аппаратное ускорение».
Вот проблема: графические процессоры и процессоры отображают немного по-разному.Когда центральный процессор передает его графическому процессору, и наоборот, вы видите, как все немного сдвигается.
Мы можем решить эту проблему, добавив следующее свойство CSS:
will-change
— это свойство, которое позволяет нам намекнуть браузеру, что мы собираемся анимировать выбранный элемент и что он должен оптимизировать для этот случай.
На практике это означает, что браузер позволяет графическому процессору обрабатывать этот элемент все время . Больше никаких переключений между процессором и графическим процессором, никакой контрольной «фиксации на месте».
will-change
позволяет нам целенаправленно определять, какие элементы следует аппаратно ускорять. У браузеров есть своя непостижимая логика вокруг этого материала, и я бы не хотел оставлять это на волю случая.
Есть еще одно преимущество аппаратного ускорения: мы можем воспользоваться преимуществом рендеринга субпикселей .
Посмотрите эти две анимации ниже. Один выполняется с использованием с верхним краем
, поэтому он не может быть аппаратно ускорен. Заметили разницу между ними?
Свойства, такие как margin-top
, не могут выполнять субпиксельную визуализацию, что означает, что их необходимо округлять до ближайшего пикселя, создавая ступенчатый эффект резкости. transform
, тем временем, может плавно переключаться между пикселями благодаря уловке сглаживания графического процессора.
Ничто в жизни не дается бесплатно, и аппаратное ускорение — не исключение.
Передав отрисовку элемента графическому процессору, он будет потреблять больше видеопамяти, а этот ресурс может быть ограничен, особенно на мобильных устройствах более низкого уровня.
Это не такая большая проблема, как раньше — я провел несколько тестов на Xiaomi Redmi 7A, популярном бюджетном смартфоне в Индии, и, похоже, он работает нормально.Только не применяйте широко будет менять
к элементам, которые не двигаются. Обдумайте, где вы его используете.
Аппаратное ускорение существует уже давно — фактически, дольше, чем свойство изменит свойство
!
В течение долгого времени это выполнялось с помощью трехмерного преобразования, такого как transform: translateZ (0px)
. Даже со значением 0px браузер по-прежнему передает его графическому процессору, поскольку перемещение в трехмерном пространстве определенно является сильной стороной графического процессора.Также есть backface-visibility: hidden
.
Когда вышел will-change
, он должен был дать разработчикам правильный, семантически значимый способ намекнуть браузеру, что элемент следует оптимизировать. Однако на первых порах у будут проблемы с заменой
.
К счастью, похоже, что все эти проблемы были решены. Я провел некоторое тестирование и обнаружил, что получаю лучшие результаты в современных браузерах с будет заменять
.Но вы всегда должны проводить собственное тестирование, чтобы убедиться, что эти методы работают на целевых устройствах и браузерах.
Ссылка на этот заголовок
Движение, управляемое действиемДавайте еще раз взглянем на нашу поднимающуюся кнопку «Hello World».
Hello World
В нынешнем виде у нас есть «симметричный» переход — анимация входа такая же, как и анимация выхода:
-
При наведении курсора мыши на элемент он смещается вверх на 10 пикселей. 250 мс
-
Когда мышь отодвигается, элемент смещается вниз на 10 пикселей за 250 мс
Маленькая милая деталь — дать каждому действию собственные настройки перехода.Для анимации наведения мне нравится делать анимацию входа быстрой и быстрой, в то время как анимация выхода может быть немного более расслабленной и вялой:
Другой распространенный пример — модальные окна. Для модальных окон может быть полезно входить с анимацией с легкостью выхода и
, а для выхода с более быстрой анимацией - с легкостью в
:
Это небольшая деталь, но она говорит о гораздо большей идее.
Я считаю, что большинство разработчиков думают в терминах состояний : например, вы можете посмотреть на эту ситуацию и сказать, что у нас есть состояние «зависания» и состояние по умолчанию.Вместо этого, что, если бы мы думали о действиях ? Мы анимируем, основываясь на том, что делает пользователь, думая в терминах событий, а не состояний. У нас есть анимация ввода мыши и анимация выхода мыши.
Тобиас Алин показывает, как эта идея может создать семантически значимую анимацию следующего уровня в своем блоге Meaningfun Motion with Action-Driven Animation.
Ссылка на этот заголовок
ЗадержкиЧто ж, мы довольно далеко продвинулись в своем стремлении овладеть переходами CSS, но есть пара заключительных деталей, о которых стоит рассказать.Поговорим о задержках перехода.
Я считаю, что почти каждый уже сталкивался с этим разочаровывающим опытом раньше:
Изображение любезно предоставлено Беном Каменсом
Как разработчик, вы, вероятно, можете понять, почему это происходит: раскрывающийся список остается открытым только при наведении курсора! Когда мы перемещаем мышь по диагонали для выбора дочернего элемента, наш курсор выходит за пределы, и меню закрывается.
Эту проблему можно решить довольно элегантным способом, не прибегая к JS.Мы можем использовать transition-delay
!
transition-delay
позволяет нам сохранять статус-кво в течение короткого промежутка времени. В этом случае, когда пользователь перемещает указатель мыши за пределы .dropdown-wrapper
, в течение 300 мс ничего не происходит. Если их мышь повторно входит в элемент в пределах этого 300-миллисекундного окна, переход никогда не происходит.
По прошествии 300 мс переход
срабатывает нормально, и выпадающий список исчезает через 400 мс.
До сих пор мы использовали сокращение transition
для объединения всех наших значений, связанных с переходом. transition-delay
также можно использовать с сокращением:
Ссылка на этот заголовок
Мерцание гибелиКогда элемент перемещается вверх или вниз при наведении курсора, мы должны быть очень осторожны. не вводите случайно «мерцание судьбы»:
Предупреждение: Этот GIF-файл включает мерцающее движение, которое потенциально может вызвать припадки у людей с светочувствительной эпилепсией.
RevealВы могли заметить похожий эффект на некоторых демонстрациях на этой странице!
Неполадка возникает, когда мышь приближается к границе элемента.Эффект наведения выводит элемент из-под мыши, что заставляет его падать обратно под мышью, что вызывает повторное срабатывание эффекта наведения… много раз в секунду.
Как решить эту проблему? Уловка состоит в том, чтобы отделить триггер от эффекта . Вот быстрый пример:
У нашего
теперь есть новый дочерний элемент, .background
. Этот диапазон содержит все косметические стили (цвет фона, шрифт и т. Д.).
Когда мы наводим курсор мыши на обычную кнопку, это заставляет ребенка выглядывать сверху. Но кнопка остается неподвижной.
Попробуйте раскомментировать контур
, чтобы увидеть, что именно происходит!
Когда я вижу в сети хорошо созданную анимацию, я реагирую с восторгом и ликованием. Однако люди разные, и у некоторых людей наблюдается очень разная реакция: тошнота и недомогание.
Я уже писал ранее о соблюдении «предпочитает уменьшенное движение», настройки уровня ОС, которые пользователи могут переключать, чтобы выразить предпочтение меньшему движению.Давайте применим эти уроки здесь, отключив анимацию для людей, которые ее запрашивают:
Эта небольшая настройка означает, что анимация будет разрешена немедленно для пользователей, которые вошли в свои системные настройки и установили флажок.
Как разработчики внешнего интерфейса, мы несем определенную ответственность за то, чтобы наши продукты не причиняли вреда. Это быстрый шаг, который мы можем предпринять, чтобы сделать наши сайты / приложения более дружелюбными и безопасными.
CSS-переходы фундаментальны, но это не значит, что они легкие.В них есть удивительная глубина; даже в этом длинном сообщении в блоге мне пришлось вырезать некоторые вещи, чтобы сохранить управляемость!
Веб-анимация важнее, чем думает большинство разработчиков. Единственный переход здесь или там не сделает и не испортит впечатление, но он складывается. В совокупности хорошо выполненная анимация может оказать удивительно глубокое влияние на общее впечатление пользователя.
Переходы могут сделать приложение «реальным». Они могут предлагать обратную связь и общаться более интуитивно, чем просто копировать.Они могут научить людей пользоваться вашими продуктами. Они могут вызвать радость.
Если вам понравилось это руководство, возможно, вам будет приятно узнать, что Я создаю курс CSS ! Мой курс специально создан для разработчиков JavaScript, и это комплексный курс с нуля, который научит вас быть уверенным и бесстрашным с помощью CSS.
Он построен на том же технологическом стеке, что и этот блог, поэтому имеет тот же стиль встроенных интерактивных виджетов, но идет еще дальше.В моем курсе есть видео, мини-игры, мастер-классы и многое другое.
Вы можете узнать больше на официальном сайте CSS для разработчиков JavaScript.
Наконец, ни одно интерактивное занятие не обходится без «режима песочницы»! Поиграйте со всеми предыдущими настройками (и парочкой новых!) И создайте генеративное искусство с помощью этого открытого виджета:
Функция синхронизации с наддувом) легкость входа-выхода (наддув) overshotShapeCircleSquareGhost Opacity
15+ CSS ПРИМЕР HOVER EFFECTS
ЕСЛИ ВАМ НРАВИТСЯ САМОЛЕТ, ТО УЗНАЙТЕ БОЛЬШЕ 40+ Пример потрясающих CSS-эффектов при наведении курсора
1.Название: -Buttons
Автор: -Элица Димитрова
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаЭто десять кнопок с эффектами наведения CSS. Для эффектов используются переходы, текстовые тени, анимация и трансформации.
2. Название: -CSS Hover Effects
Автор: -Rosa
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима9 эффектов наведения карты CSS с использованием переходов и преобразований
3.Название: -Текстовые эффекты наведения
Автор: -Matteo
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 4. Название: -Button hover effects with box-shadow
Автор: -Giana
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 5. Название: -10 потрясающих эффектов при наведении курсора
Автор: -Ренан С.Араужо
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 6. Название: - Карты глубины параллакса
Автор: - Энди Мерскин
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 7. Название: -Button Hover Effects
Автор: -Ритчи Джейкобс
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаButton hover экспериментирует с псевдоэлементами.
8.Title: -Библиотека миксинов Sass для наведения текста
Автор: -Antonija Šimic
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаДемо для библиотеки миксинов sass для эффектов наведения текста
9. Название: -Hover эффекты с CSS3
Автор: -Jacob Stone Design
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 10.Название: -CSS3 Button Hover Effects with FontAwesome
Автор: -foxeisen
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 11. Название: -CSS Card Hover Effects
Автор: -Jhonier Riascos Zapata
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 12. Название: -CSS3 Эффекты наведения курсора на кнопку с FontAwesome
Автор: -foxeisen
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаЭффекты наведения кнопки на чистом CSS3
13.Название: -Pure-CSS Netflix Show Carousel
Автор: -Джош Хант
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режима 14. Название: -Simple Lightspeed Hover Effect
Автор: -Аржан Джассал
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаЭффекты наведения — это весело.
15.Название: -Анимированная кнопка наведения
Автор: -Sammy Helali
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаПростая кнопка с анимацией наведения
16. Название: -3D эффект зависания самолета.
Автор: -Риан Ариона
Сделано с помощью: - HTML CSS JAVASCRIPT
Войти в полноэкранный режимВыйти из полноэкранного режимаПростой эффект наведения трехмерной плоскости с использованием преобразования CSS3
17.Название: -Button Hover
Автор: -Кэтрин Като
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаЧистый CSS (SCSS) эффект наведения кнопки со стрелкой.
18. Название: -CSS3 Hover Effect using: after Psuedo Element
Автор: -Ларри Гимс Паранган
Сделано с помощью: - HTML CSS
Войти в полноэкранный режимВыйти из полноэкранного режимаЕСЛИ ВАМ НРАВИТСЯ САМОЛЕТ, ТО ПОЛУЧИТЕ БОЛЬШЕ 40+ Пример потрясающих CSS-эффектов при наведении курсора
Справочное руководство CSS: CSS: селектор наведения
Chidume Nnamdi Подписаться Я инженер-программист с опытом работы более 6 лет.Я работал с разными стеками от WAMP до MERN и MEAN. Я предпочитаю JavaScript; фреймворки — Angular и Nodejs.37 сек на чтение 174
Селектор CSS : hover
— это селектор псевдокласса, используемый для применения стилей к элементу при наведении курсора мыши на элемент.
Вот пример реализации:
a: hover { цвет: оранжево-красный; }
Мы применили псевдоселектор : hover
ко всем элементам и
.Это сделает цвет текста элемента и
оранжево-красным при наведении курсора мыши на элемент.
Вы можете поиграть с живым примером на CodePen ниже:
См. Pen
css: hover авторства Чидум Дэвид (@ philipsz-davido)
на CodePen.
Мы также можем применить селектор : hover
ко всем элементам тела:
body *: hover { фон: желтый; }
Это приведет к тому, что все элементы внутри основного элемента будут отображать желтый фон, когда мышь перемещается по элементам.
В дополнение к фону мы также можем изменить границу, радиус границы, шрифт, цвет текста, отступы, поля и т. Д.
Чтобы применить селектор : hover
ко всем элементам в документе, мы просто используем звездочку:
*: hover { граница: 1px сплошной оранжево-красный; }
Это приведет к тому, что границы наведенных элементов будут иметь ширину 1 пиксель, сплошной красно-оранжевый цвет.
Ваш интерфейс загружает процессор ваших пользователей?
По мере того, как веб-интерфейсы становятся все более сложными, ресурсоемкие функции требуют все большего и большего от браузера.Если вы заинтересованы в мониторинге и отслеживании использования ЦП на стороне клиента, использования памяти и многого другого для всех ваших пользователей в производственной среде, попробуйте LogRocket. Https://logrocket.com/signup/LogRocket похож на DVR для веб-приложений , записывая все, что происходит в вашем веб-приложении или на сайте. Вместо того, чтобы гадать, почему возникают проблемы, вы можете агрегировать и составлять отчеты по ключевым показателям производительности внешнего интерфейса, воспроизводить пользовательские сеансы вместе с состоянием приложения, регистрировать сетевые запросы и автоматически обнаруживать все ошибки.
Модернизируйте отладку веб-приложений — начните мониторинг бесплатно.
Chidume Nnamdi Подписаться Я инженер-программист с опытом работы более 6 лет. Я работал с разными стеками от WAMP до MERN и MEAN. Я предпочитаю JavaScript; фреймворки — Angular и Nodejs. Справочное руководство CSS: border
»Лучшие CSS-эффекты при наведении курсора на кнопки, которые вы тоже можете использовать
Если вы хотите немного изменить свою страницу, идеально подойдет установка эффектов наведения кнопок CSS. Это поможет сократить время пребывания посетителей. Анимированные кнопки побудят посетителей увидеть, что предлагает ваш сайт, и сделают вашу страницу более динамичной.Это также повышает репутацию вашего бренда.
Эта статья покажет вам 20 различных эффектов при наведении курсора на кнопки CSS. Все они легкие, простые и удобные в использовании. Даже при минимальных знаниях Javascript и CSS настроить эти эффекты несложно. Вы можете поэкспериментировать с макетами и выяснить, что лучше всего подходит для вас.
Простые в использовании и понятные эффекты наведения кнопки CSS
Кнопка Fun
Эти кнопки CSS обладают классным эффектом ауры текста и цветов при наведении на них курсора.Это сделает ваш дизайн более живым и понравится тем, кто посещает ваш сайт.
Кнопка Twitter для скрытой двери
Используя эту кнопку, пользователи могут взаимодействовать с вашим веб-сайтом с помощью дополнительных элементов взаимодействия. Вы увидите изображение, похожее на значок Twitter. Когда вы наводите указатель мыши на него, появляется структура, которая выглядит как скрытая дверь, пока она удерживает кнопку действия.
Кнопка Cool Beans 60 кадров в секунду
Использовать эту кнопку довольно просто.Вы можете выбрать, использовать ли трансформации и непрозрачность для анимации. Вы можете сообщить браузеру следующую анимацию, используя «will change: transform».
CSS3 Эффекты при наведении курсора на кнопку с FontAwesome
Эта кнопка связана с FontAwesome с уникальными вариантами дизайна. Этот CSS3 имеет различные эффекты наведения CSS, которые показывают стрелку вместо текста. Он содержит стрелку на кнопке, известную как текстовый сдвиг.
Создавайте визуально привлекательные и высокопроизводительные веб-сайты без написания кода
WoW ваших клиентов, создавая инновационные и стимулирующие отклик веб-сайты
быстро, без опыта программирования.Slider Revolution
позволяет привлечь к вам поток клиентов за модным дизайном веб-сайтов.
Пользовательский значок CSS Button Hover
Эффект наведения этой кнопки — это 3D-анимация, основанная на CSS и HTM. Вы можете использовать кнопки в разделе призыва к действию, чтобы сделать его более привлекательным и побудить людей купить ваш продукт или услугу. Можно редактировать текстовую часть внутри кнопки.
Анимированная кнопка с радужным наведением
При наведении курсора на эту анимированную кнопку появляется цветовой эффект радужного тона.Этот эффект возможен с помощью кодирования CSS и HTML. Он нравится большему количеству людей, наслаждаясь плавным взаимодействием с вашим сайтом. Вы можете выбирать из различных оттенков и цветовой палитры анимации.
Откидная кнопка
Смесь Sass Button Border Hover Effect
При наведении курсора на кнопку CSS появится эффект рисования.
Коллекция эффектов при наведении курсора на кнопки
Эта кнопка имеет несколько эффектов наведения кнопок CSS, которые могут понравиться вашим посетителям, включая изменение цвета, заливку и эффекты контура.
Анимация наведения кнопки CSS-маски
Этот эффект наведения идеально подходит для запуска кнопки кадра, что является целью разработчика для создания этой спрайтовой анимации.
CSS Fizzy Button
Эффект наведения кнопки CSS с уникальными функциями
Прозрачная прозрачная пуговица
Отличной особенностью эффекта наведения этой кнопки является настраиваемая прозрачная кнопка с границами. Это означает, что вы можете добавлять тексты в соответствии с их назначением.Когда вы нажимаете кнопку или наводите курсор на кнопку, цвет и прозрачность текста меняются на разные цвета на непрозрачном уровне.
Переворот кнопки CSS с автоматической шириной
Это анимированная кнопка. Вы можете настроить его тексты на лицевой и оборотной сторонах. Например, у вас есть слово «Мода» в качестве текста спереди, но при наведении курсора на эту кнопку текст изменится на «Модный».
Эффекты при наведении курсора на кнопку с Box-Shadow
Это идеальная кнопка первичного блочно-теневого типа..
Iconic Button FX
Каждый значок этой кнопки имеет свой собственный эффект подписи при нажатии или наведении курсора. Хотя вы не можете использовать все доступные значки на своем веб-сайте, вы можете клонировать их с помощью пользовательских стилей анимации. Какой бы шрифт значков вы ни выбрали для текста, они подойдут соответственно. Использование Iconic Button FX — отличный способ настроить ваш сайт.
Эластичная кнопка с эффектом наведения
Эффект растяжения или расширения появляется при наведении курсора на эту кнопку.Вы можете выбрать одну из двух анимированных строк вверх и вниз до текстовой части кнопки.
Загрузчик кнопок на чистом CSS | Bootstrap 4 | SCSS
Кнопка CSS 100 дней № 045
Когда вы нажимаете кнопку или наводите указатель мыши на кнопку, цвет контура кнопки становится более интенсивным, пока она перемещается по ее границам.
Пуговицы со снятой полосой
При наведении на эту кнопку вы увидите анимированную диагональную одинарную рамку.
Тонкие пуговицы
Кнопка маны
Эта кнопка проста и понятна.Разработчик использовал всего 80 строк CSS и несколько десятков строк HTML. При наведении указателя мыши на кнопку создается фоновая заливка для анимации пользовательской жидкой формы.
Липкая пуговица
Эта кнопка с эффектом наведения на основе CSS поставляется с фильтрами SVG.
Кнопка CSS с эффектом наведения
Если вам нужны простые эффекты наведения кнопки CSS, эта кнопка обеспечивает эффективный и тонкий дизайн. Когда над ним парит, у него появляется исчезающая аура.
Кнопки со значками
Больше эффектов наведения кнопки CSS с настраиваемым дизайном
Эффект клика на чистом CSS
Эту кнопку легко клонировать. Вы можете перенести эффекты на что угодно. Эффекты больше похожи на табуляцию или выбор элементов страницы. После щелчка значков целевых фрагментов они в конечном итоге загораются.
Анимация с кубической кривой Безье
Как только вы поместите указатель мыши на кнопку, текст изменит цвет.Вы можете настроить цвет текста и кнопок в соответствии со своими предпочтениями. Хотя эта кнопка проста, она сделает вашу страницу интереснее и интереснее.
Простые эффекты наведения кнопки CSS
Эта кнопка имеет эффект сдвига цвета при разделении на X-образную форму при наведении курсора. Текст также растягивается вместе с эффектом кнопки. Это улучшает дизайн и макет вашего сайта и делает вашу страницу более живой.
Пограничная кнопка
Эффект наведения этой кнопки делает ее забавной.
Эффект наведения кнопки на чистом CSS
Анимация кнопок CSS + SVG
Несмотря на то, что это всего лишь одна анимированная кнопка, ее эффект впечатляет и великолепен. Вы увидите эффект кнопки, залитой цветом от боковых сторон к середине, в то время как контур имеет контрастный цвет.
Кнопки наведения
Кнопка наведения, используемая для свойства смешанного режима CSS.
Изменение фона
Кнопка имеет один сплошной цвет, а граница имеет другой стиль и цвет.В результате цвет фона кнопки меняется на другой в соответствии с ее границей.
Это рекомендуемый эффект наведения кнопки CSS для ваших страниц с поддержкой AJAX. Вам не нужно перезагружать всю страницу. Используя эту бесконечную разбивку на страницы, посетители могут просматривать всю анимацию во время загрузки нового содержимого. Недостатком этой кнопки является то, что она имеет ограниченное практическое значение.
Анимация простых кнопок CSS
Дизайн этой кнопки больше скользит по цвету с разных сторон.Он также заполняет пуговицу от центра к краю. Если вы ищете простой эффект наведения кнопки CSS, это отличный выбор.
Эффект свечения при наведении
Стилизованные пуговицы
Эта кнопка имеет эффекты при наведении курсора.
CSS-иконки при наведении курсора
Он основан исключительно на CSS. Когда вы примените эту кнопку к своей странице, ваша страница будет иметь скрытые значки. Они появятся только после того, как вы поместите курсор в раздел кнопок.
CSS3 Кнопки
Эффект этой кнопки — тень и крутой эффект перехода. Когда вы нажимаете на кнопку, кажется, что она отрывается от экрана, чтобы показать текст или значки.
Анимация кнопки-призрака
Никола Попович создал эту анимацию кнопки на основе выстрела Dribbble.
Больше анимированных кнопок CSS
Эти кнопки CSS с эффектами наведения, просты и удобны в использовании. Чтобы сделать кнопки более привлекательными, не нужно изучать сложное кодирование.Он сделает всю работу за вас.
Кнопка CSS с эффектом свечения
Эта кнопка имеет привлекательный эффект свечения. Поместите курсор в верхнюю часть кнопки, появится 3D-эффект со свечением оттенка радуги.
Кнопки + Svg Trianglify
Эта кнопка проста в использовании. Он имеет красочные изображения SVG с простым дизайном. Более того, у него плавный переход, поскольку он основан на CSS и Javascript. Эффекты перехода появятся при наведении курсора.
Всплывающая подсказка CSS
Если вам нужны всплывающие подсказки по умолчанию, вы можете использовать встроенную опцию в вашем браузере. Вы также можете создать свой собственный, используя плагин или перья для клонирования, такие как CSS Tooltip Hovers. При наведении курсора на текст в теге HTML появится эффект затухания, напоминающий всплывающую подсказку.
Три простых эффекта наведения кнопки CSS
Эти три эффекта наведения кнопок CSS имеют классный переход, улучшающий внешний вид вашего сайта.
Кнопка «Click Me»
В этой кнопке появится эффект наведения / щелчка CSS.
Эффекты наведения фото
Это простой эффект наведения, который идеально подходит для изображений на странице. Он полагается только на простую галерею миниатюр. Заголовок изображения, описание и кнопка «Подробнее» появятся при наведении курсора на фотографию.
Эффекты при наведении курсора на кнопку
Когда вы применяете этот эффект наведения на свою страницу, вы можете настроить кнопки в соответствии со своими потребностями и предпочтениями.Например, вы можете применять различные эффекты с помощью тени на каждой кнопке. Помимо box-shadow, вы можете использовать border-radius и letter-spacing для сбалансированного эффекта и анимации на своем веб-сайте.
Анимированные кнопки
Эта кнопка имеет эффект наведения радуги.
Стильные анимированные кнопки CSS для блогеров
Это идеальный выбор для блогеров. Вы можете выбирать из различных эффектов наведения. Это может быть цвет, проводимый по кнопке слева направо, справа налево или сверху вниз.Они выделяют контур кнопки для лучшего дизайна.
Поскольку эта кнопка использует CSS, она имеет уникальный эффект наведения курсора на каждую гиперссылку. Для этого пера вы можете выбрать различные события при наведении курсора.
Эффекты при наведении курсора на кнопку CSS
С помощью этой кнопки вы увидите, что общие эффекты — это тень, пульс, угловой фон и неон.
Пуговица для раскрашивания пузырей
Эта кнопка на основе CSS имеет эффект окраски пузырьков.
Эффекты при наведении курсора кнопки отправки CSS
Анимируйте псевдоэлементы «: before» и «: after», чтобы получить убедительные эффекты наведения кнопки отправки CSS.
Если вам понравилась эта статья об эффектах наведения кнопок CSS, вам также следует прочитать ее:
CSS: переключатель при наведении курсора
Пример
Выбор и стиль ссылки при наведении на нее курсора:
а: парение
{
цвет фона: желтый;
}
Дополнительные примеры «Попробуйте сами» ниже.
Определение и использование
Селектор: hover используется для выбора элементов при наведении на них указателя мыши.
Совет: Селектор: hover можно использовать для всех элементов, а не только по ссылкам.
Совет: Используйте селектор: link для стилизации ссылок на непосещенные страницы, селектор: посещенный для стиля ссылки на посещенные страницы, и : активный селектор для стилизации активной ссылки.
Примечание: : hover ДОЛЖЕН стоять после: link и: loaded (если они присутствуют) в определении CSS, чтобы быть эффективным!
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую селектор.
Селектор | |||||
---|---|---|---|---|---|
: парение | 4,0 | 7,0 | 2,0 | 3,1 | 9,6 |
Примечание: В IE должен быть объявлен чтобы селектор: hover работал с другими элементами, кроме элемента .
Синтаксис CSS
: hover {объявления css ;
} Демо
Другие примеры
Пример
Выбор и стиль элемента
,
и
при наведении на него курсора: p: hover, h2: hover, a: hover {
background-color: yellow;
}
Пример
Выбор и стиль непосещенных, посещенных, наведенных и активных ссылок:
/ * непосещенная ссылка * /a: ссылка {
цвет: зеленый;
}
/ * посещенная ссылка * /
a: посетил {
цвет: зеленый;
}
/ * навести курсор мыши
ссылка * /
a: наведение {
цвет: красный;
}
/ *
выбранная ссылка * /
а: активный {
цвет: желтый;
}
Пример
Стили ссылок с разными стилями:
а.ex1: hover, a.ex1: active {цвет: красный;
}
a.ex2: hover, a.ex2: active {
font-size: 150%;
}
Пример
Наведите указатель мыши на элемент , чтобы отобразить элемент span: hover + div { Показать и скрыть раскрывающееся меню при наведении курсора мыши: ul { CSS: ссылки CSS Учебное пособие по CSS: Псевдоклассы CSS Чтобы удержать посетителей сайта, вы должны предоставлять контент, который соответствует их ожиданиям. Однако даже если ваш сайт предлагает нужную информацию, вам все равно придется при необходимости направлять читателей на другие ресурсы. В этом отношении вы должны выделить наиболее важные элементы своего сайта, чтобы посетители знали, куда идти дальше и что делать, когда они туда попадут. Добавление CSS-эффектов наведения — один из способов выделить важные элементы сайта и упростить взаимодействие с пользователем.Благодаря множеству готовых эффектов наведения, добавление одного на ваш сайт может быть несложным процессом. Во-первых, разберитесь, что такое эффекты наведения курсора CSS и когда их использовать. Вкратце, каскадные таблицы стилей (CSS) — это фрагменты кода, которые сообщают веб-браузерам, как отображать содержимое веб-страницы. Эффекты наведения анимируют определенные элементы сайта, такие как ссылки или кнопки, всякий раз, когда посетитель наводит на них курсор.Чтобы создать эффект наведения, примените код CSS к элементу, который вы хотите выделить. Обычный вариант использования эффекта наведения — это когда вы наводите указатель мыши на строку текста, и ее фон меняет цвет. Эффекты наведения можно использовать, чтобы выделить конкретное действие, например кнопку «Не пропустите» на главной странице eBay, или выделить ярлык меню, который вы можете увидеть в действии на веб-сайте Village Voice . Подобно домашней странице Angry Birds, многие сайты сочетают эффекты заголовка и наведения курсора на кнопку, чтобы повысить вовлеченность посетителей. более эффективны, если их экономно применять к элементам, на которые вы хотите, чтобы посетители нажимали. Один из наиболее распространенных способов использования этого эффекта — комбинировать его с призывом к действию (CTA). Согласно блогу CreativeMMS , призывы к действию — это директивные заявления, которые облегчают путь вашего потенциального клиента или клиента, сообщая им, что делать дальше. Применяя эффекты наведения, вы можете направлять посетителей и повышать вероятность того, что они отреагируют на ваш призыв к действию. Если у вас есть план WordPress.com Premium или Business, вы можете добавить собственный CSS на свой сайт. Вот как добавить эффект наведения. CodePen — это онлайн-репозиторий бесплатных стилей и анимации CSS, которые вы можете просматривать, чтобы найти понравившийся эффект наведения. Кроме того, вы также можете выполнить поиск в Google, чтобы найти другие ресурсы CSS. Но если вы собираетесь использовать эффекты CSS из Интернета, поищите те, которые используют только HTML и CSS.Избегайте использования JavaScript, поскольку он добавляет дополнительный уровень сложности (и не разрешен на WordPress.com, если у вас нет бизнес-плана). После того, как вы выберете соответствующий CSS-эффект наведения, добавьте его HTML-код в свой пост или страницу. Вы можете сделать это, переключившись в редактор HTML. Добавьте HTML-код в соответствующее место и сохраните страницу. Следующим шагом является добавление CSS, который применит эффект наведения после запуска.Чтобы получить доступ к функции Custom CSS, щелкните пункт меню Customize , чтобы открыть Customizer , затем выберите CSS . Затем скопируйте CSS из выбранного вами примера эффекта наведения и вставьте его в редактор CSS. Нажмите кнопку Publish , чтобы сохранить изменения, и ваш CSS-эффект наведения будет активен для HTML-элемента, который вы добавили ранее. Работа с настраиваемым кодом поначалу может быть пугающей, но как только вы поймете основы, вы сможете пролить свет на то, что вы хотите, чтобы посетители делали, обеспечивая при этом более увлекательный пользовательский интерфейс. Создание уникального веб-сайта — это вопрос выбора правильных цветов, сочетания правильных шрифтов и настройки всех деталей, чтобы он выделялся . Среди этих деталей одна из самых узнаваемых особенностей — это, конечно же, , как пользователь взаимодействует с вашим веб-сайтом. и как эти взаимодействия воспринимаются, входят в мир анимации наведения. Каждый раз, когда пользователь просматривает ваш веб-сайт с помощью мыши, он выполняет действие hover над некоторыми элементами на вашей странице, вызывая изменение статуса этих «зависших» элементов.Конечно, в этом статусе элементы могут быть стилизованы и называется «: hover». В CSS Hero 3.3 мы представили коллекцию фрагментов кода, чтобы вы могли легко добавлять эффекты к элементам при наведении курсора. Конечно, мы рекомендуем использовать их для элементов с гиперссылками, таких как ссылки, кнопки или любой другой элемент, который, по вашему мнению, может потребовать внимания пользователя при наведении указателя мыши. Чтобы применить эффект наведения, просто запустите CSS Hero, щелкните элемент (ы), к которым нужно применить эффект наведения, и перейдите на панель Snippets , здесь вы найдете вкладку Hover Effects , попробуйте один который вам подходит, нажмите Применить , и все готово. Теперь вы можете попробовать навести курсор на этот элемент, чтобы увидеть эффект наведения в действии. Вы можете выбрать среди множества различных эффектов, которые вы можете протестировать здесь, и все они основаны на фантастической библиотеке Hover.css от Яна Ланна . Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me Hover Me
дисплей: нет;
}
display: block;
} Пример
display: встроенный;
маржа: 0;
отступ: 0;
}
ul li {display: inline-block;}
ul li: hover
{background: # 555;}
ul li: hover ul {display: block;}
ul li ul {
позиция: абсолютная;
ширина: 200 пикселей;
дисплей: нет;
}
ul li ul li {
фон:
# 555;
дисплей: блочный;
}
ul li ul li a {display: block
! important;}
ul li ul li: hover {background: # 666;} Связанные страницы
Учебник Примените эффекты наведения CSS для улучшения пользовательского опыта — WordPress.com
Эффекты наведения выделяют важные элементы сайта
Направляйте посетителей и продвигайте свои призывы к действию
Эффекты наведения Начало работы с эффектами наведения курсора CSS
1. Найдите эффект наведения, который вы хотите использовать
2. Добавьте HTML к своему содержанию
3. Добавьте CSS в настройщик
Эффекты наведения с CSS Hero