CSS transition — скорочення для плавної зміни стилів
CSS властивість transition встановлює ефект переходу між двома станами елемента. Використовується з псевдокласом :hover або :active або якщо стан елементу був динамічно змінений за допомогою JavaScript.
Властивість transition - це універсальна властивість, яка дозволяє одночасно задати чотири значення, які розділені пропуском:
transition-propertytransition-durationtransition-timing-functiontransition-delay
Загальний опис
автор: NagarD
- Порада
-
Завжди вказуйте властивість
автор: NagarDtransition-duration, якщо цього не зробити тривалість переходу буде 0s, тому перехід не матиме ніякого ефекту. - Нотатка
-
Зверніть увагу, що порядок запису значень для властивості має дуже велике значення.
автор: NagarD
Синтаксис
transition: property duration timing-function delay|initial|inherit;
Властивість transition може отримувати 6 значень:
-
transition-property -
Ім'я властивості, за якою ми будемо слідкувати. І коли значення цієї властивості зміниться - запуститься ефект переходу.
автор: NagarD -
transition-duration -
Тривалість ефекту переходу.
автор: NagarD -
transition-timing-function -
Визначає криву (функцію) ефекту переходу.
автор: NagarD -
transition-delay -
Затримка ефекту переходу.
автор: NagarD -
initial -
Встановлює властивість у значення без задання
автор: NagarD -
inherit -
Вказує на спадковість властивості від свого батьківського елемента (якщо відповідна властивість встановлена)
автор: NagarD
| Значення без задання: | all 0s ease 0s |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.transition="all 2s" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 26 | 16 | 9 | 12.1 | 12 | 10 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 26 | 16 | 9 |
Приклади
+ запропонувати свій приклад у пісочниці
Інструмент
Малює криву плавності й програє її на анімації.
Редактор cubic-bezier — окремою сторінкою, з поясненням пасток.
Клацни в поле: :focus міняє ширину, а transition розтягує зміну на 0.35 секунди замість стрибка.
HTML
<p>Клацни в поле — ширина плавно виросте зі 100 до 250 пікселів:</p>
<input type="text">
CSS
input[type=text] {
width: 100px;
transition: width .35s ease-in-out;
}
input[type=text]:focus {
width: 250px;
}
Наведи курсор — ширина росте зі 100 до 300 пікселів рівно 2 секунди; забери курсор, і блок так само плавно повернеться.
HTML
<div>Наведи — розтягнуся до 300px</div>
CSS
div {
width: 100px;
padding: 8px;
background: #0172ad;
color: #fff;
transition: width 2s;
}
div:hover {
width: 300px;
}
Повний запис скорочення: властивість, тривалість, крива й затримка — перехід стартує через 0.2 секунди після фокуса.
HTML
<p>Клацни в поле — воно розшириться з невеликою затримкою:</p>
<input type="text">
CSS
input[type=text] {
width: 100px;
transition: width .35s ease-in-out .2s;
}
input[type=text]:focus {
width: 250px;
}
Кілька властивостей через кому: ширина і колір тла їдуть кожна зі своєю тривалістю.
HTML
<div>Наведи — виросту й зміню колір</div>
CSS
div {
width: 100px;
padding: 8px;
background: #0172ad;
color: #fff;
transition: width 2s, background-color 1s;
}
div:hover {
width: 300px;
background-color: #d81b60;
}
Динамічний приклад застосування властивості transition
HTML
<p>Зараз блок без ефектів при наведенні. Ви ожете їх уввімкнути, тицнувши на пунктик нижче, та подивитися на результат.</p>
<label>
Уввімкнути ефект:
<input type="checkbox" id="field">
<span>transition: all .15s ease-in 0s;</span>
</label>
<div class="wrapper">
<div id="block">
<p>Блок</p>
</div>
</div>
CSS
body {
font-family: monospace;
font-size: 18px;
color: #222;
line-height: 1.45;
}
label {
padding: 16px 0;
display: block;
border-bottom: 2px dashed #666;
}
span {
padding: 4px 6px;
background-color: orange;
border-radius: 4px;
}
.wrapper {
background-color: #eee;
padding: 16px;
margin-top: 16px;
border-radius: 4px;
}
#block {
background-color: #666;
padding: 16px;
width: 100px;
text-align: center;
color: #ddd;
border-radius: 4px;
transition: all 0s ease-in 0s;
}
#block:hover {
background-color: #111;
color: red;
}
JS
document.getElementById('field').onchange = function () {
document.getElementById('block').style.transitionDuration = '0.5s';
};
//# sourceURL=pen.js
Простий приклад для демонстрації роботи властивості
HTML
<div class="block">
<code>transition: width .2s ease-out .15s</code>
</div>
CSS
body {
padding: 36px;
}
.block {
width: 350px;
background-color: gold;
color: #444;
font-size: 15px;
padding: 16px 8px;
transition: width .2s ease-out .15s
}
.block:hover {
width: 425px;
}
Коментарі
Коментарів ще немає — будьте першим!