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).
Продолжение в следующей статье!