CSS3
January 7, 2021
③ Функция перехода transition-timing-function
Продолжим изучение темы CSS3 - переходы. Если пропустили прошлые статьи, то вот ссылки на них:
Свойство задаёт временную функцию, которая описывает скорость перехода объекта от одного значения к другому. Если вы определяете более одного перехода для элемента, например, цвет фона элемента и его положение, вы можете использовать разные функции для каждого свойства. Свойство не наследуется.
transition-timing-function
Значения:
ease
- Функция по умолчанию, переход начинается медленно, разгоняется быстро и замедляется в конце. Соответствуетcubic-bezier(0.25,0.1,0.25,1)
.linear
- Переход происходит равномерно на протяжении всего времени, без колебаний в скорости. Соответствуетcubic-bezier(0,0,1,1)
.ease-in
- Переход начинается медленно, а затем плавно ускоряется в конце. Соответствуетcubic-bezier(0.42,0,1,1)
.ease-out
- Переход начинается быстро и плавно замедляется в конце. Соответствуетcubic-bezier(0,0,0.58,1)
.ease-in-out
- Переход медленно начинается и медленно заканчивается. Соответствуетcubic-bezier(0.42,0,0.58,1)
.cubic-bezier(x1, y1, x2, y2)
- Позволяет вручную установить значения от0
до1
для кривой ускорения. На этом сайте вы сможете построить любую траекторию перехода.initial
- Устанавливает значение свойства в значение по умолчанию.inherit
- Наследует значение свойства от родительского элемента.
Синтаксис
CSS
div { transition-timing-function: linear; }
HTML
<div class="wrap"> <a href="#go"><span class="fa fa-power-off"></span>Запустить</a> <a href="#reset"><span class="fa fa-refresh"></span>Назад</a> <div id="go"> <kbd>transition-timing-function</kbd> <p><kbd>linear</kbd></p> <p><kbd>ease</kbd></p> <p><kbd>ease-in</kbd></p> <p><kbd>ease-out</kbd></p> <p><kbd>ease-in-out</kbd></p> <p><kbd>cubic-bezier</kbd></p> </div> </div>
CSS
body { margin: 0; display: flex; justify-content: center; align-items: center; height: 100vh; font-family: 'Playfair Display', serif; line-height: 1; color: #696150; } .wrap {max-width:660px;} #go > kbd{display:block;margin-top:15px;} p { width: 125px; padding: 10px 0; text-align: center; border-radius: 4px; transition-duration: 3s; } a { text-decoration: none; display: inline-block; margin-right: 20px; color: inherit; } .fa {padding-right: 10px;font-weight:bold} .fa.fa-power-off {color:#FF9E3B} .fa.fa-refresh {color:#B7CCCC} p:nth-of-type(1) { background: #F06E58; transition-timing-function: linear;} p:nth-of-type(2) { background: #FEA45D; transition-timing-function: ease;} p:nth-of-type(3) { background: #FDF569; transition-timing-function: ease-in;} p:nth-of-type(4) { background: #B9EA7B; transition-timing-function: ease-out;} p:nth-of-type(5) { background: #B9ECFE; transition-timing-function: ease-in-out;} p:nth-of-type(6) { background: #82DDFF; transition-timing-function: cubic-bezier(0.6, 0.1, 0.15, 0.8);} #go:target p{transform:translateX(300px)}
Для создания более реалистичных анимаций используйте функцию cubic-bezier
:
ТАБЛИЦА 1. ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ CUBIC BÉZIER
Структура таблицы следующая: Пользовательское название - Значение функции
- 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)
.
Продолжение в следующей статье!