CSS-анимация - это возможность сделать вашу страницу интерактивной и добавить ей определенной привлекательности, которая в свое время стала очень лакомым кусочком для всех верстальщиков. В этой статье мы рассмотрим анимацию с помощью свойства transition
, хотя есть еще такие свойства, как @keyframes
и animation
, которые достойны отдельной статьи.
Свойство transition
можно перевести, как переход, т.е. при анимации с помощью этого css-свойства в течение некоторого времени осуществляется плавный переход от начального к конечному значению выбранных для этого свойств.
Большинство браузеров на данный момент поддерживают свойство CSS3 transition
, о чем можно получить справку на сайте caniuse.com. Исключение составляют Internet Explorer 6-9 и все версии Opera Mini. Пользователи этих браузеров, к сожалению, не увидят созданной вами анимации.
hover-эффекты с помощью свойства transition
Чаще всего свойство transition
применяется для создания hover-эффектов, или эффектов при наведении курсора мыши. Его суть заключается в том, что оно просчитывает изменения между свойствами, заданными для обычного состояния элемента, и при наведении на него курсора мыши, которое задается с помощью псевдокласса :hover. Это позволяет создавать различные красивости от плавного изменения цвета текста и фона на кнопках-ссылках до наплывающих блоков и сменяющихся картинок. Очень интересные эффекты можно получить, если использовать псевдоэлементы ::before и/или ::after.
Составляющие свойства transition
Свойство transition
является составным (обобщенным, или универсальным), что значит, что оно состоит из ряда свойств, которые можно задавать по отдельности. Синтаксис его таков:
1 | transition: transition-property transition-duration transition-timing-function transition-delay; |
Из кода видно, что вы можете использовать 4 свойства. Рассмотрим эти css-свойства по отдельности:
Свойство transition-property
Возможные значения transition-property
:
1 | transition-property: свойство | all | none | initial | inherit |
Свойство 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 с id="tr-property"
с салатного на желтый за 0.8 секунды.
1 2 3 4 5 6 7 8 9 | #tr-property { background-color: lime; padding: 20px; transition-property: background-color; transition-duration: .8s; } #tr-property:hover { background-color: yellow; } ------------- <div id="tr-property">transition-property</div> |
Сам пример вживую:
Наведите на блок ниже
В свойстве transition-property
можно указать несколько значений через запятую или использовать значение all
(все свойства), которое является значением по умолчанию. Также свойство transition-property
имеет значение none
(ни одно из свойств), которое обычно применяют для отмены анимации, например на мобильных устройствах.
Рассмотрим пример, в котором нужно анимировать несколько свойств:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #tr-property2 { background-color: violet; border: 3px solid #f09; transition-property: background-color, border-color, border-width, border-radius; transition-duration: .8s } #tr-property2:hover { background-color: lightblue; border-width: 6px; border-color: blue; border-radius: 8px; } |
Обратите внимание, что для div-а с id="tr-property2"
свойство border-radius
изначально не было задано, оно получило значение в 8px только при наведении (псевдокласс :hover
), тем не менее скругление углов тоже было анимированным, т.к. его включили в свойство transition-property, а его начальное значение (0) было взято из значений по умолчанию для border-radius
.
Наведите на блок ниже
несколько свойств
Тот же самый пример можно было сократить, использовав в коде свойство all
вместо перечисления нескольких свойств для анимации.
1 2 3 4 5 6 7 8 9 10 11 12 | #tr-property3 { background-color: #91bbfc; border: 3px solid #0582f1; transition-property: all; transition-duration: .8s } #tr-property3:hover { background-color: #fad069; border-width: 6px; border-color: #742d2d; border-radius: 10px; } |
Наведите на блок ниже
Свойство 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, т.е. время на анимацию фактически нет, поэтому, если вы забудете указать это значение, то переход свойств не произойдет.
1 | transition-duration: время в s или ms | 0s (по умолчанию)| initial | inherit |
Код примера для исследования свойства transition-duration
таков:
1 2 3 4 5 6 7 8 9 10 | .tr-dur-all:hover * {transform: translateY(-20px); } #tr-duration{ background-color: #91bbfc; transition-duration: .7s} .tr-dur-all:hover #tr-duration {background-color: blue; } #tr-duration2{ background-color: #fb9c04; transition-duration: 1.5s} .tr-dur-all:hover #tr-duration2 {background-color: #ff0; } #tr-duration3{ background-color: #d604fb; transition-duration: 2.5s} .tr-dur-all:hover #tr-duration3 {background-color: #ff3465; } |
Пример с разной длительностью анимации:
Наведите на блок ниже
Свойство transition-duration
Использование только свойства transition-duration
при hover-эффекте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #tr-dur { width: 120px; height: 120px; line-height: 120px; background-color: #f00; margin: 40px; text-align: center; text-transform: uppercase; font-weight: bold; transition-duration: 1000ms; } #tr-dur:hover { transform: scale(1.3) rotate(1turn); background-color: #ff0; } |
Обратите внимание, что в качестве свойства, отвечающего за переход, использовано только transition-duration
. Свойство transition-property
принимает значение all
, которое является значением по умолчанию, поэтому анимации подлежат все измененные свойства.
Результат:
Используем transition-duration
Свойство transition-timing-function
В соответствии с переводом это свойство задаёт временную функцию, которая описывает способ расчета скорости перехода свойств(а) html-элемента от одного значения к другому. По умолчанию свойство имеет значение ease
, т.е. анимация происходит с некоторым замедлением.
Варианты свойства transition-timing-function
:
1 2 | transition-timing-function: ease| ease-in| ease-out| ease-in-out| linear | cubic-bezier | step-start| step-end | steps |
На примере ниже вы можете видеть действие большинства из этих вариантов. Можно заметить, что английское слово 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.
Код для блоков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | .text-block { flex: 0 0 32%; background-color: #70e0fa; padding: 15px; cursor: pointer; border: 5px solid #0d6579; transition-duration: .5s; transition-property: background-color, color, border-color, border-radius; transition-timing-function: ease-in, ease-in-out, cubic-bezier(1, -0.01, 0, 1.01), cubic-bezier(.65, -0.45, .65, 1.47); } .text-block:hover { border-color: #fff; background-color: #02238e; color: #fff; border-radius: 20px; box-shadow: 0 0 6px 2px rgba(1, 20, 82, 0.7); } |
Нужно иметь ввиду, что свойство transition-timing-function
не наследуется, т.е. для него нельзя использовать значение inherit
.
Пример использования функции cubic-bezier()
демонстрирует эффект появления подсказок-названий социальных сетей. Они как бы "выпрыгивают" из иконки при наведении на нее курсора мыши.
See the Pen Social Media Icons with Popups (HTML + Pure CSS Only) by Abdelrhman Said (@abdelrhmansaid) on CodePen.
Если вы не хотите самостоятельно управлять графиком скорости анимации перехода или не очень понимаете, в чем заключается разница между ними, можно воспользоваться готовыми графиками и функциями. На сайте easings.net вы можете выбрать различные варианты функции замедления, рассмотрев их графики и посмотреть наглядно, как происходит анимация с выбранной функцией, наведя курсор мыши на график:
Все перечисленные на данном сайте функции основаны на значении cubic-bezier
. В таблице ниже приведены названия функций и их аналоги, которые вы можете использовать в своем коде.
Название функции | Аналог функции в виде cubic-bezier |
---|---|
easeInSine | cubic-bezier(0.47, 0, 0.745, 0.715) |
easeOutSine | cubic-bezier(0.39, 0.575, 0.565, 1) |
easeInOutSine | cubic-bezier(0.445, 0.05, 0.55, 0.95) |
easeInQuad | cubic-bezier(0.55, 0.085, 0.68, 0.53) |
easeOutQuad | cubic-bezier(0.25, 0.46, 0.45, 0.94) |
easeInOutQuad | cubic-bezier(0.455, 0.03, 0.515, 0.955) |
easeInCubic | cubic-bezier(0.55, 0.055, 0.675, 0.19) |
easeOutCubic | cubic-bezier(0.215, 0.61, 0.355, 1) |
easeInOutCubic | cubic-bezier(0.645, 0.045, 0.355, 1) |
easeInQuart | cubic-bezier(0.895, 0.03, 0.685, 0.22) |
easeOutQuart | cubic-bezier(0.165, 0.84, 0.44, 1) |
easeInOutQuart | cubic-bezier(0.77, 0, 0.175, 1) |
easeInQuint | cubic-bezier(0.755, 0.05, 0.855, 0.06) |
easeOutQuint | cubic-bezier(0.23, 1, 0.32, 1) |
easeInOutQuint | cubic-bezier(0.86, 0, 0.07, 1) |
easeInExpo | cubic-bezier(0.95, 0.05, 0.795, 0.035) |
easeOutExpo | cubic-bezier(0.19, 1, 0.22, 1) |
easeInOutExpo | cubic-bezier(1, 0, 0, 1) |
easeInCirc | cubic-bezier(0.6, 0.04, 0.98, 0.335) |
easeOutCirc | cubic-bezier(0.075, 0.82, 0.165, 1) |
easeInOutCirc | cubic-bezier(0.785, 0.135, 0.15, 0.86) |
easeInBack | cubic-bezier(0.6, -0.28, 0.735, 0.045) |
easeOutBack | cubic-bezier(0.175, 0.885, 0.32, 1.275) |
easeInOutBack | cubic-bezier(0.68, -0.55, 0.265, 1.55) |
Для тех, кто любит JavaScript, можно посмотреть на реализацию разных вариантов ease
в отдельной статье (англ.).
Свойство transition-delay
Свойство transition-delay
позволяет указать задержку в секундах или миллисекундах, после которой будет запущена анимация. Его необязательно использовать для всех анимаций и даже необязательно указывать, т.к. по умолчанию transition-delay
равен 0s.
1 | transition-delay: 0s | число s | число ms | initial | inherit |
Это свойство удобно использовать, когда необходимо, чтобы анимация "сыграла" не сразу, а с некоторым отставанием. В примере ниже мы создадим эффект всплывающей подсказки, которая появляется через 0.3s
после наведения курсора на элемент с изображением. При наведении на блок с классом .tr-holder
мы будем запускать анимацию для блока с классом .tr-descr
. Обратите внимание на то, как записан код: свойства группы transition
, в том числе и transition-delay
, указаны для .tr-descr
, а псевдокласс :hover
использован для .tr-holder
. При этом изменение свойства bottom
все же записано в виде контекстного селектора:
1 | .tr-holder:hover .tr-descr { bottom: 0; } |
Кроме того, для блока .tr-descr
указан курсор в виде руки, как подсказка, что при наведении на этот элемент что-то произойдет.
Еще одна особенность стилей .tr-holder
, на которую стоит обратить внимание - это свойство overflow: hidden
при заданных свойствах width
и height
, которое позволяет отсечь все, что выходит за пределы этих ширины и высоты. Именно благодаря этим свойствам мы не видим изначально блока с описанием .tr-descr
, т.к. он спрятан внизу за счет использования свойства bottom: -40%
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <style> .tr-holder { position: relative; overflow: hidden; max-width: 640px; max-height: 350px; box-shadow: 0 0 4px #999; border-radius: 6px; cursor: pointer; margin: 10px; } .tr-holder img { max-width: 100%; height: auto; display: block; margin: 0; } .tr-holder:hover .tr-descr { bottom: 0; } .tr-descr { background: rgba(0, 0, 0, .7); color: #fbfbfb; font-weight: bold; font-size: 18px; width: 100%; padding: 10px; position: absolute; bottom: -40%; transition-property: bottom; transition-duration: .7s; transition-timing-function: ease-out; transition-delay: 0.3s; } </style> <div class="tr-holder"> <img src="images/devices.jpg" alt="RWD"> <div class="tr-descr">Responsive Web Design is modern trend in web</div> </div> |
Посмотрим на сам пример:
Свойство transition-delay
Наведите на картинку ниже
Обобщенное свойство transition
Вы, должно быть, заметили, что указывать все свойства группы transition
довольно длинно и утомительно. Поэтому намного чаще используют обобщенное (составное или универсальное) свойство transition
, в котором через пробел можно указать все нужные вам свойства:
1 | transition: transition-property transition-duration transition-timing-function transition-delay; |
Если вам не нужны все свойства, вы должны указать, как минимум количество секунд или милисекунд для transition-duration
:
1 2 3 4 | transition: .5s; /*-- соответствует --*/ transition: all .5s ease 0s; |
Задавать анимацию перехода можно для нескольких свойств, указывая их через запятую. Например:
1 | .example { transition: opacity .7s ease-out, transform .5s .3s } |
Рассмотрим пример, в котором использованы сразу несколько анимаций - для заголовков 2-го и 3-го уровней и для абзаца. Для каждого из них будет указано обобщенное свойство transition
, но с разным набором свойств.
Для заголовка 2-го уровня свойство transition
содержит 3 свойства transition-property
, transition-duration
и transition-timing-function
:
1 2 | .tr-block h2 {...; transition: opacity .4s cubic-bezier(.29, -0.32, .68, .41); } |
Для заголовка 3-го уровня свойство transition
содержит указание свойства и времени на переход ( transition-property
и transition-duration
):
1 | .tr-block h3 { transition: transform .5s; } |
Для абзаца в свойстве transition
использованы 2 свойства - время анимации (transition-duration
) и задержка (transition-delay
):
1 | .tr-block p { transition: .5s .4s;} |
Общие правила этого примера таковы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <style> .tr-block { position: relative; display: inline-block; vertical-align: top; cursor: pointer; width: 320px; min-height: 220px; background-image: radial-gradient(#818181, #333); color: #fff; text-align: center; padding: 10px; margin: 15px; border: 2px solid #ccc; outline: 2px solid #ccc; outline-offset: 3px; overflow: hidden; } .tr-block h2 { position: absolute; color: rgba(0, 0, 0, 0.6); text-shadow: 1px 1px 1px #fbfbfb; transition: opacity .4s cubic-bezier(.29, -0.32, .68, .41); } .tr-block:hover h2 { opacity: 0; } .tr-block h3 { color: #fff; transform: translate(-110%); transition: transform .5s; } .tr-block:hover h3 { transform: translate(0); } .tr-block p { line-height: 1.4; opacity: 0; transform: translateY(110%); transition: .5s .4s; } .tr-block:hover p { transform: translate(0); opacity: 1; } </style> <div class="wrapper"> <div class="tr-block"> <h2>Свойство группы transition №1</h2> <h3>transition-property</h3> <p>Свойство, которое необходимо анимировать.</p> </div> <div class="tr-block"> <h2>Свойство группы transition №2</h2> <h3>transition-duration</h3> <p>Свойство, задающее время анимации перехода.</p> </div> <div class="tr-block"> <h2>Свойство группы transition №3</h2> <h3>transition-timing-function</h3> <p>Функция, описывающая способ расчета скорости перехода свойств.</p> </div> <div class="tr-block"> <h2>Свойство группы transition №4</h2> <h3>transition-delay</h3> <p>Свойство, задающее задержку перед запуском анимации. </p> </div> </div> |
Сам пример:
Свойство группы transition №1
transition-property
Свойство, которое необходимо анимировать.
Свойство группы transition №2
transition-duration
Свойство, задающее время анимации перехода.
Свойство группы transition №3
transition-timing-function
Функция, описывающая способ расчета скорости перехода свойств.
Свойство группы transition №4
transition-delay
Свойство, задающее задержку перед запуском анимации.
Обратите внимание, что для появления заголовка 3-го уровня и абзаца в примере выше было использовано свойство transform
. Аналогичным образом можно сдвинуть элементы с абсолютным позиционированием, задавая потом анимацию для координат left
, top
, right
или bottom
. Рассмотрим и этот вариант.
В примере ниже мы анимируем "выезд" ссылки, которая перекрывает весь наш блок, но изначально не видна за счет использования свойства overflow: hidden
для родительского блока и left: -110%
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <style> * { box-sizing: border-box; } .my-box { display: inline-block; width: 175px; height: 100px; border: 2px solid #cde; text-align: center; text-transform: uppercase; text-shadow: 1px 1px 1px #fff; line-height: 50px; margin: 15px; padding: 10px; position: relative; background-image: linear-gradient(45deg, #0076ff, #8ce8f8); cursor: pointer; overflow: hidden; } .tr-more { display: inline-block; text-decoration: none; background-color: rgba(10, 85, 172, 0.65); color: #fff; line-height: 40px; text-shadow: none; position: absolute; top: 0; left: -110%; width: inherit; height: inherit; padding: inherit; transition: left .5s cubic-bezier(.1, .39, .27, 1.35) .2s; } .my-box:hover .tr-more{left: 0;} </style> <div class="wrapper"> <div class="my-box"> <h4>Flexbox</h4> <a href="//html-plus.in.ua/model-flexbox-properties/" class="tr-more" target="_blank"> Узнать подробнее</a> </div> <div class="my-box"> <h4>Bootstrap</h4> <a href="//html-plus.in.ua/category/bootstrap/" class="tr-more" target="_blank"> Узнать подробнее</a> </div> <div class="my-box"> <h4>JavaScript</h4> <a href="//html-plus.in.ua/category/javascript/" class="tr-more" target="_blank"> Узнать подробнее</a> </div> </div> |
Пример вживую:
Еще один пример появления текста при наведении на блок:
See the Pen card hoverexample by Elen (@ambassador)on CodePen.
Особенности добавления свойства transition
Поскольку свойство transition
применяется для hover-эффектов, добавить в код это свойство можно, как для основных правил для html-элемента, id, класса или другого css-селектора, так и для псевдокласса :hover
этого селектора. Однако имеет смысл делать это именно в основных свойствах нужного блока, т.к. вы получаете плавный переход как при наведении курсора мыши, так и при уведении его с элемента. Если же вы размещаете свойство transition
только в правилах для псевдокласса :hover
анимация при наведении курсора мыши происходит плавно, а при уведении курсора - рывком.
Наведите и уведите курсор мыши на левый и правый блок с изображением и понаблюдайте за разницей в анимационных эффектах.
transition для основных правил
transition только для :hover
Код примера таков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <style> .tr-hover { transition: opacity .7s ease-out; } .tr-hover:hover { opacity: .3; } .tr-only-hover:hover { opacity: .3; transition: opacity .7s ease-out; } </style> <div class="wrapper"> <div class="img-holder tr-hover"> <img src="images/headphones-02.jpg" alt="headphones-02"> <h3>transition для основных правил</h3> </div> <div class="img-holder tr-only-hover"> <img src="images/headphones-01.jpg" alt="headphones-01"> <h3>transition только для :hover</h3> </div> </div> |
Анимация появления - исчезновения
Еще один вариант интересной анимации - использовать свойства transition
вместе с css-свойством clip-path
. Последнее скрывает часть блока или изображения, но при наведении показывает все целиком. Либо мы можем наблюдать обратный результат - сначала видно все, что есть в блоке, а при наведении курсора мыши видимая часть пропадает, и появляется что-либо еще.
See the Pen Show Posts with clip-path by Elen (@ambassador)on CodePen.
Заинтересовались, как это сделать? Тогда вам стоит еще прочитать статью "Использование свойства clip-path в CSS".
Заключение
Свойство transition
очень популярно и на данный момент применяется довольно часто для создания hover-эффектов для различных блоков, особенно для посадочных страниц (Landing page). Минусом таких эффектов является то, что на тач-устройствах, т.е. мобильных телефонах и планшетах, эти эффекты не отображаются, т.к. не происходит само событие наведения и уведения курсора мыши.
Также анимация типа transition
широко применяется и в современных JS библиотеках и фреймворках, например, для анимации компонентов во Vue.js.
Спасибо за отличную подачу материала! Видно не только профессионала-программиста, а ещё и Человека! Удачи!
И вам спасибо за комментарий! Есть повод работать дальше над статьями.
Надо же, как все просто и наглядно описано. Спасибо!!
Спасибо и вам за такой комментарий! Приятно, что все понятно. Это и было целью статьи.
спасибо очень полезно много узнал как использовать анимацию
И вам спасибо за комментарий. CSS-transition - очень востребованное свойство на современных сайтах.
Хорошая статья ! Спасибо !