Переходы с помощью hover


Содержание

CSS3 — переходы

Представленные в данной статье примеры переходов вы можете протестировать на странице «Примеры переходов».

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

Какими бы не были псевдоклассы замечательными, они больше не являются передовой технологией. Проблема с ними состоит в их характере типа «все или ничего». Например, настройки стиля псевдокласса :hover активируются сразу же при наведении курсора на элемент, т.е. происходит резкий скачок из одного стиля в другой. А вот в приложениях Flash, Silverlight или в прикладных программах эффект обычно более утонченный. Здесь кнопка при наведении курсора может менять цвет, сдвигаться или подсвечиваться, но делается это с использованием тонкой анимации, занимающей долю секунды.

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

Простой цветовой переход

Чтобы понять принцип работы переходов, нужно рассмотреть реальный пример. Такой пример показан на рисунке ниже, где изменение цвета кнопки при наведении на нее курсора осуществляется с помощью возможностей перехода CSS3:

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

Смену цвета без эффекта перехода можно реализовать следующим кодом:

А этот код создает кнопку, которая форматируется только что описанным стилем:

Чтобы получить плавное изменение цвета, т.е. переход, нам нужно в только что описанный стиль добавить свойство transition. (Обратите внимание, что это свойство вставляется в обычный стиль (в данном случае стиль slickButton), а не в псевдокласс :hover.)

Как минимум, свойство transition требует установки двух значений: свойства CSS, которое нужно анимировать, и времени, на протяжении которого нужно выполнить изменение стилей. В данном примере переход применяется к свойству background, а время перехода равно 0.5 секунды:

Как вы, несомненно, заметили, в предыдущем коде в стиль были добавлены три свойства transition, вместо обговариваемого одного. Это потому, что стандарт переходов CSS3 все еще находится в процессе разработки и поддерживающие его браузеры требуют применения префиксов разработчиков. Таким образом, чтобы переход работал в браузерах Chrome, Safari, Firefox и Opera, нужно установить три значения свойства transition, добавляя к каждому из них свой префикс разработчика. А для Internet Explorer 10 (который, как ожидается, будет поддерживать переходы) нужно будет добавить еще одну версию свойства, с префиксом -ms-. К сожалению, использование экспериментальных свойств может породить неопрятные таблицы стилей.

Так, в данном примере присутствует один мелкий недостаток, а именно, в активированной кнопке меняются два элемента оформления — цвет самой кнопки и цвет текста на ней. Но эффект перехода применяется только к цвету фона кнопки, в результате чего смена цвета текста происходит мгновенно, в то время как цвет фона кнопки меняется постепенно.

Эту проблему можно решить двумя способами. При первом подходе свойству transition присваивается список переходов, разделенных запятыми:

Но этот код можно сократить, если нам нужно установить переход для всех изменяющихся свойств и при одинаковом времени перехода для них всех. В таком случае вместо списка свойств для перехода мы просто используем ключевое слово all:

На момент написания этих строк переходы поддерживались браузерами начиная с Opera 10.5 и Firefox 4, а также всеми версиями Safari и Chrome, с которыми вам когда-либо приходилось работать. Браузер Internet Explorer поддерживает переходы начиная с версии 10. Отсутствие поддержки переходов — не такая и большая проблема, как может показаться, т.к. браузер все равно меняет стили. Только эта смена происходит почти мгновенно, а не с растянутым во времени переходом. А это уже хорошая новость, т.к. веб-сайт может использовать переходы и в то же самое время сохранять основные визуальные стили для старых браузеров.

Задержка и комбинирование эффектов перехода

В эффектах перехода можно использовать свойство transition-delay, которое задерживает начало перехода на указанное время:

Теперь анимация перехода при наведении указателя мыши будет задерживаться на две секунды. То же самое произойдет и при отведении указателя мыши. Значение свойства transition-delay можно указывать в самом свойстве transition, как необязательный параметр:

Этот код аналогичен предыдущему. Спецификация CSS3 позволяет комбинировать несколько эффектов перехода (с разной длительностью), как это было продемонстрировано с кнопкой. Вместо указания всех подробностей перехода в одном свойстве transition, можно использовать свойства transition-property (для указания анимируемого свойства) и transition-duration (для указания задержки):

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

Использование функций замедления

Переход можно настроить более тонко. Для этого можно использовать свойство transition-timing-function, которое позволяет изменять скорость перехода в процессе его осуществления. Например, начало перехода может быть медленным с последующим ускорением, или наоборот, быстрый переход в начале и замедленный в конце. Для коротких переходов это свойство не играет большой роли. Но в длинных и более сложных анимациях оно может изменить общее восприятие эффекта.

Функции замедления не являются каким-то инновационным средством CSS3, они уже давно используются в WPF и Silverlight (Инерционность движения).

Свойство transition-timing-function использует функцию cubic-bezier() для задания функции замедления через кривую Безье. Кривая Безье определяется двумя точками: начальное смещение и конечное смещение. Чтобы понять это давайте рассмотрим пример определения простой кривой Безье:

Этой функции соответствует следующий график:

Как видите здесь две точки с координатами (0.42, 0) и (0.58, 1) задают вид кривой Безье. Если вы укажите данную функцию замедления в предыдущем примере, то все эффекты перехода будут сначала выполняться чуть медленее, потом скорость будет больше и в конце перехода скорость снова уменьшится (согласно графику).

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

Опробуйте этот эффект на примере кнопки, гарантирую, результат вам понравиться.

В свойстве transition-timing-function можно использовать несколько стандартных значений, которые определяют некоторые значения функции cubic-bezier:

Стандартные значения функций кривых Безье, используемые в свойстве transition-timing-function

Значение График Функция cubic-bezier() Описание
linear 0, 0, 1, 1 Немедленный старт и остановка, анимация происходит с постоянной скоростью
easy 0.25, 0.1, 0.25, 1 Быстрый старт и быстрое ускорение, медленный переход с замедлением в конце
ease-in 0.42, 0, 1, 1 Медленный старт с нарастающим ускорением и резкой остановкой в конце
ease-out 0, 0, 0.58, 1 Обычный старт с замедлением в конце
ease-in-out 0.42, 0, 0.58, 1 Медленный старт с небольшим ускорением, скорость перехода постоянная, в конце происходит замедление

Шаги анимации

Кроме функций замедления, элемент можно анимировать используя шаги, т.е. ступенчато. (Примером может послужить секундная стрелка часов, которая сначала двигается, а затем осуществляется задержка на 1 секунду, потом снова двигается и снова задержка и т.д.) Шаги задаются с помощью функции steps(). Ниже показан пример:

Теперь анимация увеличения кнопки будет проходить рывками. Задержка между рывками в данном случае будет 667ms (2000/3). Второй параметр функции steps указывает, будет ли рывок выполняться сразу или после задержки:

Переходы Hover с помощью jQuery

Мне интересно, как я должен добавить переход к этому коду.

Я искал в Интернете какое-то время, но не нашел простого решения. Я очень новичок в jQuery. Вот именно, что я пытаюсь сделать.

jquery animation transition hover

3 ответа

0 Melkor [2013-07-06 07:40:00]

Я внесла некоторые коррективы в свой ответ и извиняюсь за свой предыдущий незаметный. Вы можете использовать animate как для mouseenter и mouseleave событий mouseleave . Но, к сожалению, у animate есть некоторые проблемы с выражением <"height": "auto">, поэтому я нашел это, чтобы решить это: JavaScript jQuery Анимация к Авто Высота

Я создал JSFiddle, который делает то, что вы хотите. Хорошая часть этого — все, что вам нужно — это стандартные переходы HTML и CSS3, которые очень быстры, и есть много прокладок CSS3, которые будут получать переходы, работающие почти во всех браузерах. То, что я сделал, сделало элемент — контейнером для div, который вы можете поместить во все содержимое внутри, а при наведении указателя на любой зеленый фон вы увидите гладко и цвет текста и красиво.

Я нашел его в другом обсуждении (рекомендуется @undefined) в конце. Спасибо за помощь, хотя :)

Очередной блог фрилансера

коротко и полезно о веб-разработке

CSS-Transitions без использования :hover

До недавнего времени, наиболее распространенным вариантом использования CSS-transitions – было сочетание его с хорошо известным псевдо-классом CSS :hover.

Далее представлен наиболее простой пример изменения цвета ссылки, при наведении мыши, выполненный на чистом CSS:

Этот код запустит анимацию свойства color, когда вы подведете мышь к ссылке. Наверняка этот простой пример не раз попадался вам на разных сайтах, но это не значит, что transitions ограничивается использованием псевдо-класса :hover.

С помощью transitions, вы можете анимировать различные CSS-свойства, используя определенные CSS-приемы. Некоторые из этих приемов, (включая демо-версию каждого) приведены в сегодняшней статье.

Transitions с использованием :active

Псевдо-класс :active применяется к любому элементу, находящемуся в процессе активации. Основным способом “активации” элемента, является щелчок мышью или нажатие кнопки мыши.

Илон Маск рекомендует:  Что такое код printer_draw_line

Далее представлен CSS-пример, демонстрирующий использование :active совместно с CSS3-transitons, для имитации события mousedown:

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

Transitions с использованием :focus

Вы можете использовать псевдо-класс :focus, для получения эффекта, описанного в предыдущем примере. В этот раз мы используем форму, и анимируем ширину любого элемента формы, получившего фокус:

Transitions с использованием :checked

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

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

Transitions с использованием :disabled

Продолжая тему стилизации веб-форм, в этот раз мы комбинируем css3-transitions с jQuery, для запуска анимации фонового цвета элементов формы, при их отключении через атрибут disabled:

И немного jQuery, чтобы удалять/добавлять атрибут disabled:

Итак, если отмечен последний из радиобаттонов (тот, что со значением “Другое”), у текстового поля удаляется атрибут disabled, при отметке остальных радиобаттонов, атрибут disabled, заново применяется к текстовому полю.

Псевдо-класс :disabled применяется к элементу, имеющему одноименный атрибут, поэтому анимация будет срабатывать всякий раз при удалении или добавлении этого атрибута.

Transitions с использованием Медиа-запросов

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

Тем не менее, это еще один способ использования CSS3-transitions. Такой прием используется на сайте modernizr.com.

Этот пример одновременно анимирует два свойства, разделенных запятой. Медиа-запрос велит блоку уменьшиться, если размер экрана становится меньше 961 пикселя.

Измените размер окна демонстрационной страницы, чтобы увидеть как это работает.

Несколько замечаний относительно примеров кода

В каждом фрагменте кода, стандартное название css3-свойства включено последним, несмотря на то, что пока не один из известных мне браузеров не поддерживает его в этом виде.

Кроме того, добавлен префикс –ms, и хотя IE8 и IE9 не поддерживают transitions, но эта поддержка очевидно будет добавлена в версии IE10.

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

Перевод статьи “CSS3 Transitions Without Using :hover”, автор Louis Lazaris

Рассказать друзьям

Понравилась статья? Лучший способ сказать спасибо — поделиться ссылкой в социальных сетях:

Плавный переход/анимация при hover на иконку

Внутри блока есть спозиционированная иконка, при наведении на которую появляется текст и бордер. Суть в том, что нужно не просто появление этих элементов — они должны как бы выезжать из-под неё вправо. Пробовал использовать анимацию, но она почему-то не срабатывает.

Буду очень благодарен, если кто-нибудь сможет помочь в решении проблемы.

2 ответа 2

Вам надо поставить на .warning-box .text стиль width: 0px изначально. Это блок спрячет. А на .warning-box:hover .text поставить width: 150px; и добавить transition , тогда будет выезжать :)

Также обратите внимание на white-space: nowrap; overflow:hidden; . Это нужно, чтобы текст принудительно вставал в одну строчку.

Вот типа такого:
(из вашего примера были изменены только .warning-box .text и .warning-box:hover .text .)

Еще один вариант, добавить в класс .warning-box свойства overflow:hidden и установить начальную ширину, в данном случае width:20px;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками html css css-animation или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35399

Как создать hover эффект на чистом CSS, привязанный к направлению курсора

Дата публикации: 2020-02-16

От автора: несколько уроков по созданию hover эффектов на чистом CSS, привязанных к направлению курсора. Уроки предназначены для тех, кто имеет хотя бы базовые знания HTML и на продвинутом уровне знают CSS/SASS.

Дисклеймер

Эффекты не работают в старых браузерах, для их работы нужен браузер с возможностью рендеринга 3D трансформаций. Я проверял эффекты в последних версиях браузеров Chrome, Firefox и Safari.

Также я использую замечательную библиотеку AutoPrefixer для автоматической подстановки вендорных префиксов. Зайдите в настройки CodePen на вкладку CSS и выберите AutoPrefixer.

Эффект hover с параллаксом

Введение

Мы с моим дизайнером наткнулись на домашнюю страницу сайта Kikk Festival еще в 2015 году, на ней были реализованы карточки с параллакс эффектом при наведении курсора. Нам понравилось, и мы захотели воссоздать такой эффект в своем проекте. Однако из-за особенностей кода мы не могли использовать JS. Я начал рыскать в поисках решений на чистом CSS и нашел кое-что интересное.

Всемогущая тильда

Один из самых любимых моих селекторов в CSS – тильда (

), которая выбирает ближайший элемент, подходящий под селектор, но расположенный после первого элемента. Например, ul

p выберет элементы p в коде ниже:

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Я понял, что это можно использовать для создания hover эффектов с учетом направления курсора практически для чего угодно!

Структура

Добавим немного SASS/CSS, чтобы расположить все ссылки по углам карточки. Можно сделать больше ссылок, но для простоты возьмем четыре. Для ускорения процесса будем использовать Haml.

Так как у нас нет JS, который бы нас предупреждал о направлении движения мыши и положении курсора, мы будем использовать ссылки для разделения карточки на зоны обнаружения. Если, например, курсор попадет на ссылку №1 сверху, то мышь попадает в зону обнаружения №1 до захода в №3 и №4.

Эффект hover


Следующий этап – присвоить каждой ссылке событие, чтобы она влияла на карточку. Вот тут нам и поможет тильда.

Карточка будет меняться при наведении курсора на любую ссылку, в отличие от селектора +, который выбирает только ближние смежные элементы.

Далее необходимо добавить уникальный эффект hover для каждой ссылки. Я поменял фон ссылок на такой же, как у соответствующих рамок, чтобы было проще понять эффект.

Трансформации

Углы определяются правильно, теперь мы добавим трансформации, которые будут наклонять карточку по углам. Первым делом необходимо добавить перспективу к контейнеру. Я обычно использую что-то в районе 1000px, чтобы можно было показать легкую глубину.

Для параллакса такого вида самым важным свойством будет не transform, а transform-origin, наложенное на карточку. Оно должно меняться для всех зон обнаружения и присваиваться к противоположному углу от текущей зоны обнаружения.

Например, если мы заходим в зону обнаружения №1 (верх лево), transform-origin должно быть bottom right, т.е. противоположный угол. Суть такая – затронутый угол должен двигаться от нас, а остальные углы к нам.

Последние штрихи

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

Осталось (1) добавить transition к карточке, чтобы сгладить переход по углам, и (2) удалить стили ссылок, чтобы они были не видны. Я люблю ставить opacity в 0 во избежание казусов. Чтобы избежать перекрытия из-за поворотов карточки, я также двигаю ссылку, на которую наведен курсор, вперед.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Результат

Ниже показана завершенная версия параллакс эффекта при наведении на CodePen . Переключите чекбокс, чтобы увидеть расположение ссылок. Для улучшения параллакс эффекта я решил добавить еще немного ссылок.

Эффект hover на примере куба

Введение

Adult Swim Singles 2020 – еще один сайт с впечатляющим эффектом наведения с учетом направления курсора. По клику на иконку календаря в левом верхнем углу открывается 3D календарь, где каждый день представлен в виде куба, который поворачивается в зависимости от направления курсора. Замечательная идея!

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

Основа

Главное отличие куба со ссылками и параллакс эффекта в формате зон обнаружения. Вместо углов мы используем стороны/грани зон обнаружения. Четыре треугольника вместо четырех квадратов.

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

Для создания треугольных ссылок можно использовать Clippy . Для совместимости с Firefox вам также нужен SVG clip-path. Ссылки должны иметь положительное значение translateZ (быть выдвинутыми на передний план), иначе они спрячутся за кубом.

Для определения ширины, высоты и трансформаций для куба мы используем переменную со значением 12px. Чтобы отличать стороны куба, мы используем разные оттенки одного цвета для симуляции освещения. Задняя сторона полностью белая.

Мы слегка повернули куб, чтобы вы могли посмотреть, что все стороны правильно расположены. Если посмотреть на transform, видно, что все стороны куба имеют отрицательное значение translateZ. То есть все стороны кроме передней находятся на заднем плане.

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

Эффект hover

Далее необходимо добавить поворот по наведению курсора. Эффект можно стилизовать как угодно, но самый реалистичный метод, который я нашел, привязан к мыши. Если мышь заходит на куб слева, куб должен повернуться слева направо. Все повороты должны быть 180deg/0.5turn или отрицательные эквиваленты. Также добавим transition, чтобы куб вращался правильно.

Полировка

Нужно отполировать две вещи:

Нижний треугольник переворачивает задний текст вверх ногами.

Hover слишком чувствительный: переход между треугольниками вызывает лишние повороты.

С текстом самый простой способ – повернуть заднюю сторону вправо без плавных переходов до основного поворота. По каким-то причинам изменение нижнего треугольника затрагивает и верхний. Поэтому нужно добавить дополнительный поворот для обоих hover эффектов.

Чувствительность hover эффектов пофиксить было сложнее. Решение заключается в том, чтобы текущая ссылка занимала все пространство трех других ссылок (полная ширина/высота, удаляем clip-path, двигаем вперед), но тогда пропадает интересный угловой эффект (когда быстро проводишь мышью по кривой над кубом). В конце концов, я решил проблему – я поставил задержку на transition так, чтобы фикс не срабатывал, если курсор на кубе не задержался более секунды. Задержка не убирает все проблемы, но смягчает большую часть.

Результат

CodePen ниже – моя завершенная опубликованная версия с цветами и иконками. Концепции в этом проекте были сложнее, но закончил его быстрее, чем параллакс эффект, так как тут я использовал знания, полученные из первого проекта.

Заключение

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

Автор: Gabrielle Wee

Источник: http://codepen.io/

Редакция: Команда webformyself.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

CSS hover эффекты — для картинок, кнопок, при наведении на ссылки, блоки и др.

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

Илон Маск рекомендует:  Адаптивная модель

Данные группы весьма условны, т.к. многие примеры пересекаются и являются универсальными, то есть могут встречаться при оформлении разных объектов.

Hover эффект в CSS стилях добавляется справа от элемента следующим образом:

Чаще всего механизм применяется именно для ссылок дабы изменить их цвет или добавить/убрать подчеркивание. Однако он может быть задан и другим блокам, кнопкам, текстам или использоваться при создании горизонтального выпадающего меню.

Современные браузеры одинаково корректно воспринимают CSS hover эффект при наведении, хотя в старых версиях IE 6 и ниже он срабатывает исключительно для линков. Плюс в некоторых источниках говорилось, что этому браузеру обязательно нужно указывать в коде .

Кстати, при задании стилей ссылок также дополнительно могут использоваться селекторы :link — для не посещенных еще страниц, :visited — тех, где вы уже были + :active определяет активный сейчас адрес. Важно размещать hover эффект в CSS после :link и :visited, если они существуют.

Перейдем от теории к практике. Ниже представлен список полезных материалов и сниппетов — переходите по ссылкам дабы просмотреть исходники.

Hover эффекты кнопок и ссылок

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

Простые примеры для кнопок

В данной статье приведены 8 базовых способов как можно оригинальным образом обыграть динамические hover эффект при наведении: добавление иконки, создания прозрачного фона, 3D преобразование, наклон и т.п. Все коды достаточно простые, вот один из них:

Необычный градиентный в кнопке

Здесь при наведении появляется яркий цветной градиент, который следует за передвижением курсора. В реализации используются CSS переменные, а также скрипт определения позиции мышки. Результат выглядит это достаточно оригинально. Описание метода ищите тут.

Sullivan Buttons

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

CSS Icons on Hover

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

Button Hover Effects

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

Несколько фишек, которые позволяют сделать более необычные подчеркивания ссылок на CSS нежели с базовым свойством text-decoration. Фон кнопки дополнительно заполняется разными визуальными эффектами.

Info on Hover

Функциональность всплывающих подсказок сейчас поддерживается во всех браузерах, но вы можете доработать ее под свои нужды. В текущем примере срабатывание псевдокласса происходит для тега dfn, смотрится стильно. Код достаточно компактный HTML + CSS.

Mana Button

Один из самых оригинальных вариантов hover эффекта в блоках — при наведении выполняется словно заполнение его жидкостью. В реализации используется CSS, HTML и SVG. В определенной тематике сайтов данный сниппет однозначно будет находкой.

Hover эффекты для изображений

15 базовых приемов

Не смотря на то, что статья была опубликована достаточно давно методы корректно работают и сейчас. Здесь, наверное, собраны все возможные типовые преобразования для графики: несколько видов зума, повороты, размытие, ч/б, прозрачность, фильтры, сияние и др. Очень полезный материал.

Красивые hover эффекты изображений

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

Barberpole Hover Animation

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

CSS hover эффекты с определением направления

Отличная подборка сниппетов и кодов по теме находится в статье с css-tricks.com. Все эти примеры объединяет тот факт, что в процессе работы определяется местоположение и направление движения курсора. Это, в свою очередь, позволяет создавать достаточно оригинальные реакции при наведении на элементы страницы:

Во многих сложных решениях Javascript и jQuery для hover эффектов позволяют значительно разнообразить и улучшить результат.

Direction Aware Hover Goodness

Direction Aware Tiles using clip-path Pure CSS

Остальные фишки ищите в оригинальной статье.

Animatism

В этой разработке более 100 простых способов «анимации» изображений или объектов при наведении. С помощью данных функций сможете реализовать разное появление кнопок, заголовков, текстов, социальных иконок и т.п. Есть варианты с изменением отображения картинок, накладками полупрозрачного фона.

Caption Hover Effects

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

CSS Hover библиотеки

Hover.css

Проект под незамысловатым названием Hover.css содержит коллекцию CSS3 эффектов для ссылок, кнопок, блоков и т.п. Можете использовать готовый код и/или добавлять в него свои модификации. Здесь много интересного: 2D/3D преобразования, работа с фоном и рамками, тени, иконки. Решение доступно в CSS, LESS и Sass форматах.

Imagehover.css

Еще одна библиотека задающая hover эффекты картинкам — в бесплатной версии найдете 44 варианта преобразований (премиальный набор содержит их в 5 раз больше). Тут также поддерживаются LESS и SCSS, весит это дело лишь 19кб. На сайте имеется страница с демонстрацией всех работающих примеров. Предлагается много уникальных фишек, которые не встречались выше.

iHover

В проекте iHover более 30 разных приемов для круглых и квадратных по формату объектов. Все они достаточно оригинальные, простых «одноэлементных» действий в виде обычного зума/вылетания практически нет. Реализована задача на чистом CSS3 + HTML (плюс Scss файлы включены). Отличная совместимость с Bootstrap 3, есть документация.

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

Если знаете еще какие-то интересные фишки и сниппеты, присылайте URL’ы на них в комментариях. И мы в будущем дополним статью.

Плавный переход в CSS — transition на примерах

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

Добиться эффекта плавного перехода можно с помощью CSS свойства – transition, где
all – эффект замедления применяется ко всем возможным переходам
1s – время выполнения плавного перехода
ease – способ выполнения плавного перехода

transition: all 1s ease;

Анимация кнопки при наведении

Демонстрация работы анимации кнопки, верхий рисунок: демо

Свойство transition следует прописать к элементу, в нашем случае это кнопка button, а не к его состоянию, то есть псевдоэлементу hover. Тогда плавный переход будет работать не только при наведении, но и при снятии курсора с элемента.

Плавный переход transition CSS. Кнопка

.button <
background-color: #2bc6a4;
border: none;
border-radius: 15px;
color: #fff;
display: block;
padding: 10px 20px;
text-align: center;
text-transform: uppercase;
width: 20%;
margin: auto;
font-family: sans-serif;
font-size: 22px;
text-decoration: none;
transition: all 1s ease;
>

.button:hover <
background-color: #4feac8;
>

Анимация фона при наведении при участии transition

Демонстрация работы анимации кнопки, нижний рисунок: демо

Создадим круг, при наведении на который будет плавно меняется его цвет. Для этого создадим тег div с классом circle, внутри которого пропишем тег span с текстом.

Плавный переход transition CSS. Круг

HTML структура готова и мы переходим к написанию CSS кода. Для реализации данного эффекта, у нас должно быть два круга, один реальный, а другой фейковый.

В CSS коде оформим внешний вид первого круга, в обычном состоянии и он будет черного цвета.

.circle <
background: #3d3d3d;
width: 198px;
height: 198px;
margin: 0 auto;
line-height: 200px;
color: #fff;
font-size: 1.8em;
border-radius: 50%;
position: relative;
cursor: pointer;
text-align: center;
>

Для текста ставим z-index: 2, таким образом текст будет на самом верхнем слое.

.circle span <
position: relative;
z-index: 2;
>

Для построения второго, зеленого круга, мы воспользуемся псевдоэлементом after – это то, что идет после блока. Обязательно прописываем пустую строчку content: » «; иначе псевдоэлемент не отобразится. Зададим ширину и высоту точно такую же, как и у первого круга и желаемый цвет при наведении.


Прописываем display: block, чтобы наш псевдо-круг вообще появился. Итак, псевдо-круг расположился ниже под первым кругом. С помощью свойств position, мы совмещаем оба круга, друг под другом, а свойство z-index: 1, слой с псевдо-кругом размещает под текстом.

.circle::after <
content: » «;
width: 202px;
height: 202px;
background: #2bc6a4;
position: absolute;
display: block;
border-radius: 50%;
top: -1px;
left: -1px;
box-shadow: 0 0 0 0 #3d3d3d inset;
transition: width 1s ease-in-out, height 1s ease-in-out, top 1s ease-in-out, left 1s ease-in-out;
>

Теперь необходимо сделать, чтобы при наведении зеленый круг пропадал, а вместо него появлялся черный. Поэтому мы будем делать следующее, при наведении на класс circle, псевдоэлемент after будет постепенно исчезать. Работа transition показана в строчке кода ниже.

transition: width 1s ease-in-out, height 1s ease-in-out, top 1s ease-in-out, left 1s ease-in-out;

и исчезнет совсем

width: 0;
height: 0;
font-size: 0;

исчезает красиво, по-центру

top: 100px;
left: 100px;

box-shadow растушёвывает края зеленого круга

.circle:hover::after <
width: 0;
height: 0;
font-size: 0;
top: 100px;
left: 100px;
box-shadow: 0 0 20px 20px #3d3d3d inset;
>

Итоги

На самом деле свойство transition очень простое, успешность его применения зависит только от ваших знаний CSS в целом.

Вы можете узнать больше, просмотрев этот видеокурс «Вёрстка сайта с нуля»

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    CSS-анимация с помощью свойства transition

    CSS-анимация — это возможность сделать вашу страницу интерактивной и добавить ей определенной привлекательности, которая в свое время стала очень лакомым кусочком для всех верстальщиков. В этой статье мы рассмотрим анимацию с помощью свойства transition , хотя есть еще такие свойства, как @keyframes и animation , которые достойны отдельной статьи.

    Свойство transition можно перевести, как переход, т.е. при анимации с помощью этого css-свойства в течение некоторого времени осуществляется плавный переход от начального к конечному значению выбранных для этого свойств.

    Большинство браузеров на данный момент поддерживают свойство CSS3 transition , о чем можно получить справку на сайте caniuse.com. Исключение составляют Internet Explorer 6-9 и все версии Opera Mini. Пользователи этих браузеров, к сожалению, не увидят созданной вами анимации.

    hover-эффекты с помощью свойства transition

    Чаще всего свойство transition применяется для создания hover-эффектов, или эффектов при наведении курсора мыши. Его суть заключается в том, что оно просчитывает изменения между свойствами, заданными для обычного состояния элемента и при наведении на него курсора мыши, которое задается с помощью псевдокласса :hover. Это позволяет создавать различные красивости от плавного изменения цвета текста и фона на кнопках-ссылках до наплывающих блоков и сменяющихся картинок. Очень интересные эффекты можно получить, если использовать псевдоэлементы ::before и/или ::after.

    Илон Маск рекомендует:  Описание ошибок vb

    Составляющие свойства transition

    Свойство transition является составным (обобщенным, или универсальным), что значит, что оно состоит из ряда свойств, которые можно задавать по отдельности. Синтаксис его таков:

    Из кода видно, что вы можете использовать 4 свойства. Рассмотрим эти css-свойства по отдельности:

    Свойство transition-property

    Возможные значения transition-property :

    Свойство transition-property задает название css-свойства для анимации перехода. Поскольку нужно просчитать разницу между начальным и конечным значением свойства, то и само свойство должно быть рассчитываемым. Например, можно изменить border-width с 1px до 6px, но нельзя преобразовать border-style из solid в dashed . Также можно уменьшить прозрачность элемента с помощью свойства opacity от значения 1 до 0, но невозможно анимировать переход от свойства visibility: visible к свойству visibility: hidden или от display: block к display: none . Для этого лучше воспользоваться методами show() или hide() библиотеки jQuery. Перечень доступных для анимации свойств можно найти в документации MDN.

    Ниже показан код, который меняет цвет фона у div с с салатного на желтый за 0.8 секунды.

    Сам пример вживую:

    Наведите на блок ниже

    В свойстве transition-property можно указать несколько значений через запятую или использовать значение all (все свойства), которое является значением по умолчанию. Также свойство transition-property имеет значение none (ни одно из свойств), которое обычно применяют для отмены анимации, например на мобильных устройствах.

    Рассмотрим пример, в котором нужно анимировать несколько свойств:

    Обратите внимание, что для div-а с свойство border-radius изначально не было задано, оно получило значение в 8px только при наведении (псевдокласс :hover ), тем не менее скругление углов тоже было анимированным, т.к. его включили в свойство transition-property, а его начальное значение (0) было взято из значений по умолчанию для border-radius .

    Наведите на блок ниже

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

    Наведите на блок ниже

    Свойство transition-duration

    Как вы могли заметить в примерах к свойству transition-property для создания анимации требовалось указать промежуток времени, за который как раз и отвечало свойство transition-duration . Собственно, этих двух свойств вполне достаточно для создания анимации типа transition . Даже скажу больше — вы вообще можете обойтись свойством transition-duration , т.к. transition-property по умолчанию имеет значение all , т.е. все измененные свойства будут анимированы.

    Свойство transition-duration измеряется либо в секундах ( 1s, 1.5s, 0.8s, .5s ) или в миллисекундах ( 1000ms, 1500ms, 800ms, 500ms ) . По умолчанию это свойство имеет значение 0, т.е. время на анимацию фактически нет, поэтому, если вы забудете указать это значение, то переход свойств не произойдет.

    Код примера для исследования свойства transition-duration таков:

    Пример с разной длительностью анимации:

    Наведите на блок ниже

    Свойство transition-duration

    Использование только свойства transition-duration при hover-эффекте:

    Обратите внимание, что в качестве свойства, отвечающего за переход, использовано только transition-duration . Свойство transition-property принимает значение all , которое является значением по умолчанию, поэтому анимации подлежат все измененные свойства.

    Используем transition-duration

    Свойство transition-timing-function

    В соответствии с переводом это свойство задаёт временную функцию, которая описывает способ расчета скорости перехода свойств(а) html-элемента от одного значения к другому. По умолчанию свойство имеет значение ease , т.е. анимация происходит с некоторым замедлением.

    Варианты свойства transition-timing-function :

    На примере ниже вы можете видеть действие большинства из этих вариантов. Можно заметить, что английское слово ease , которое присутствует в 4-х значениях свойства, отвечает за замедление движения, причем с добавкой in — в начале движения, с out — в конце, а с in-out — и в начале и в конце. График функции можно посмотреть в том же примере при наведении на любой блок.

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

    На первом графике показан линейный переход ( linear ) — анимация происходит равномерно, без задержек в начале или в конце. Второй график отображает функцию ease-in — анимация происходит с замедлением в начале, т.к. именно в начале перехода за продолжительное время (2 клетки на графике) изменение свойства происходит очень незначительно (полклетки). Третий график отвечает за функцию ease-out — анимация с замедлением в конце. Для него характерно небольшое изменение значения анимируемого свойства за продолжительное время именно к концу анимации, т.е. ситуация и сам график противоположны функции ease-in .

    Вариант cubic-bezier — это возможность управлять 2-мя точками графика с помощью маркеров для изменения точек на кривой Безье, которые чаще всего используются дизайнерами при создании векторных форм в таких программах, как Adobe Illustrator или Inkscape. Вам необязательно владеть этими программами, чтобы управлять графиком функции. Вполне достаточно знать, как использовать Инспектор свойств браузера (клавиши F12 или Ctrl + Shift + I ). Скриншоты сделаны в браузере Chrome.

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

    Потяните за точку в начале или в конце графика и задайте другой вариант управления скоростью анимации transition :

    При изменении графика вы получите один из вариантов функции типа cubic-bezier , который отобразится в свойстве transition-timing-function . Если вы удовлетворены результатом, просто скопируйте код в свой редактор, т.к. изменения в Инспекторе свойств продержатся лишь до следующего обновления страницы.

    Аналогичным образом можно управлять графиками функций в свойстве transition-timing-function с помощью текстового редактора Brackets. Для того чтобы выполнить редактирование, поставьте курсор в любом месте значения для свойства transition-timing-function и нажмите Ctrl + E .

    В Brackets вы также можете воспользоваться перетягиванием одного или обоих маркеров курсором мыши или смещать его после выделения клавишами-стрелками. При изменении значения вы так же, как и в случае с Инспектором свойств, получаете функцию вида cubic-bezier :

    Подробнее об основах изменения скорости можно почитать в этой статье.

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

    Свойство transition-timing-function

    Example 1

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perspiciatis aliquam molestiae vitae possimus, nesciunt aliquid quaerat sint illum? Vel libero ducimus quidem nesciunt.

    Example 2

    Aspernatur assumenda culpa totam eligendi asperiores, nesciunt enim dignissimos ab perspiciatis, nisi saepe. Error et veniam natus magnam delectus nostrum corporis maiores!

    Example 3

    Architecto asperiores modi cum aliquid labore, quasi impedit quis velit similique adipisci sunt molestiae soluta at nam eligendi ad dignissimos temporibus.

    One more step

    Please complete the security check to access codepen.io

    Why do I have to complete a CAPTCHA?

    Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.

    What can I do to prevent this in the future?

    If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.

    If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.

    Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.

    Cloudflare Ray ID: 5341b8855da88e83 • Your IP : 188.64.174.135 • Performance & security by Cloudflare

    Сделать состояние CSS Hover остаётся после «unhovering»

    Я столкнулся с небольшой проблемой, с которой мне никогда не приходилось сталкиваться раньше. Я начинающий веб-дизайнер, и недавно я использовал функцию наведения CSS на div на моей веб-странице. Еще один образ проявляется, когда он нависает над этим div; однако новое изображение исчезает, когда вы «открываете», и я хочу, чтобы он оставался видимым.

    Вот пример кода, который я использую:

    Есть ли способ решить это, используя только CSS? Пока я не использовал javascript, и мне это не очень удобно.

    В любом случае, любые решения будут с радостью приняты! Большое спасибо.

    Здесь я иду с моей идеей CSS.

    Вы можете использовать задержку перехода; http://jsfiddle.net/nAg7W/

    возможно, и щелкнуть, чтобы оно исчезло. http://jsfiddle.net/nAg7W/1/

    Как указывает @Leo Pflug, вы можете сделать это с некоторой уверенностью в CSS и HTML на и после клика, используя методы, подробно описанные здесь http://cssconf.com/talk-seddon.html.

    С тиром JavaScript, это возможно и просто и надежно, как показано на @сдвиге ветра.

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

    Единственный способ, которым вы можете сделать это с чистым CSS — это CSS3 Animations. С этой целью я создал демонстрационную версию http://cdpn.io/GLjpK (v2 w/FF & IE), которая использует CSS-анимацию для перехода в состояние наведения при наведении и затем сохраняет это состояние до перезагрузки страницы.

    Я протестировал в нем последние версии Chrome, последние версии Firefox и IE 10. Работали во всех трех.

    Примечание. У меня возникли проблемы с тем, что codepen не отображал последний сохраненный код, поэтому я создал новый здесь http://cdpn.io/GLjpK.

    ОБНОВЛЕНИЕ: Леа Веру теперь также продемонстрировала эту технику в своем посте Анимации с плавным состоянием и анимацией

    Вы не можете навсегда оставаться в состоянии зависания с использованием CSS, поскольку он просто определяет правила стилизации тегов, классов, идентификаторов, псевдоклассов и состояний. К сожалению, для решения проблемы вам нужен Javascript.

    Будучи поклонником jQuery library (hehehe), вот мое решение.

    Javascript с помощью jQuery

    Событие one привязывает обработчик к событию для элементов. Обработчик выполняется не более один раз для каждого элемента.

    Это нужно сделать с помощью JavaScript, используя jquery, вы можете надолго добавить стиль следующим образом:

    Некоторые чистые идеи CSS

    Я не совсем уверен, что вы намереваетесь «оставаться видимым». Вот некоторые разные мысли, основанные на ваших возможных целях, но у каждого есть возможные побочные эффекты, не предназначенные. Единственное чисто постоянное решение будет через javascript (как отмечали другие).

    Долгое пребывание, но не постоянное

    Если вы имеете в виду оставаться видимым до тех пор, пока человек может также нависнуть над самим обнаруженным изображением, тогда будет выполнено простое изменение вашего кода:

    Постоянное «пребывание»

    Если вы оберните #onabout в оболочку position: fixed , которая также отображается при наведении, и установите эту оболочку для исправления сверху, справа, внизу и слева от экрана, затем используйте эту оболочку :hover для сохранения #onabout он останется навсегда. Но он также будет находиться в фиксированном положении, и другие события или клики могут быть предотвращены. Это, вероятно, нежелательно, но опять же, я не знаю вашего конкретного приложения, поэтому вполне возможно, что идея будет работать на вас. Фактически вы установили display: block по умолчанию на #onabout и спрятали его через оболочку. Код для обертки и зависания будет выглядеть примерно так:

    Так как #onabout находится в #permaHoverWrap в этом решении, он становится видимым через отображение фиксированной обертки, а затем остается таким образом гарантированным зависанием этой оболочки. Опять же, побочные эффекты этого решения могут быть слишком серьезными, за исключением случаев, когда это необходимо. Однако, как доказательство концепции, это можно сделать исключительно с помощью CSS.

    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL