CSS3 как использовать свойство transition?
В этой статье мы разберем, как использовать свойство CSS3 - transition.
Свойство transition дает нам возможность контролировать параметры эффекта перехода.
Как работает свойство transition?
Начнем с простого примера. Создадим блок и укажем ему время продолжительности эффекта перехода.
<div class="transbox"></div>
Эффект перехода поддерживается не во всех браузерах.
Interne Explorer: не поддерживает.
Firefox: -moz-transition.
Safari и Chrome: -webkit-transition.
Opera: -o-transition.
По-этому CSS3 код будет следующий.
.transbox {
width: 50px;
height: 50px;
border:1px solid #333;
-webkit-transition: 1s;
-moz-transition: 1s;
-o-transition: 1s;
-ms-transition: 1s;
}
Но для того чтобы эффект перехода заработал, нам необходимо добавить стили поведения нашего блока при наведении (:hover) или фокусировки (:focus).
Именно для блока с псевдо-классом :hover (:focus) надо описать свойства которые примет наш блок (элемент) после окончания эффекта перехода.
Добавим же эти стили:
.transbox:hover{
width: 500px;
height:50px;
background: #69c;
box-shadow: 0 0 10px #333;
}
Результат
Определения и использование
У эффекта перехода есть четыре свойства:
transition-property, transition-duration, transition-timing-function и transition-delay.
Примечание: Всегда задавайте значение продолжительности перехода transition-duration в противном случае продолжительность будет равна нулю и все прочие эффекты не сработают.
| Значения по-умолчанию: | all 0 ease 0 |
|---|---|
| Наследуется: | нет |
| Версия: | CSS3 |
| JavaScript синтаксис: | object.style.transition="width 2s" |
Синтаксис
transition: property duration timing-function delay;
| Значение | Описание |
|---|---|
| transition-property | определяет название(-я) CSS свойств(-а) для которого (-ых) применяется эффект перехода |
| transition-duration | Продолжительность эффекта в секундах или миллисекундах |
| transition-timing-function | Определяет скорость кривой эффекта перехода |
| transition-delay | Определяет время начала эффекта перехода (задержка перед стартом) |
После того, как мы разобрались с синтаксисом и посмотрели на небольшом примере, можно и более подробно разобрать каждое из четырех свойств.
1. Transition-property
Давайте в начале посмотрим на синтаксис:
transition-property: none | all | [ <IDENT> ] [, <IDENT> ]*
В качестве значения мы указываем название свойства к которому будет применен эффект перехода. Также мы можем указать несколько свойств разделяя их при этом запятой.
Примеры использования transition-property:
transition-property: all; transition-property: none; transition-property: background-color; transition-property: background-color, height, width;
2. Transition-duration
В этом свойстве мы задаем время, необходимое для завершения эффекта перехода.
transition-duration: <time> [, <time>]*
Примеры использования transition-duration:
transition-duration: 2s; transition-duration: 4000ms; transition-duration: 4000ms, 8000ms;
Если указать отрицательное значение, то оно будет восприниматься как ноль.
3. Transition-timing-function
Данное свойство позволяет задать интенсивность выполнения эффекта перехода. Задать временную функцию можно двумя способами: написав название функции или настроить свою временную функцию.
transition-timing-function: <временная функция> [, <временная функция>]* <временная функция> = ease | linear | ease-in | ease-out | ease-in-out или <временная функия> = cubic-bezier(<числоr>, <число>, <число>, <число>)
Пример использования transition-timing-function:
transition-timing-function: ease; transition-timing-function: ease, linear; transition-timing-function: cubic-bezier(0.6, 0.1, 0.15, 0.8);
В примере ниже покажем поведение всех временных функций
4. Transition-delay
Данное свойство позволяет задать задержку перед началом выполнения эффекта перехода.
transition-delay: <time> [, <time>]*
Пример использования:
transition-delay: 5s; transition-delay: 4000ms, 8000ms; transition-delay: -5s;
В завершение статьи о эффектах перехода в CSS3 🙂
Еще пару примеров
<div class="transbox2"> <div class="c-1">c-1</div> <div class="c-2">c-2</div> </div>
.transbox2 div {
width: 70px;
height: 50px;
margin-top: 20px;
border:1px solid #333;
border-radius: 10px;
}
.transbox2:hover .c-1{
width: 500px;
background: #69c;
}
.transbox2:hover .c-2{
width: 200px;
background: #000;
color:#f00;
padding:5px 50px 5px 200px;
}
.c-1 {
-webkit-transition: background 3s ease-out, width 2s ease 3s;
-moz-transition: background 3s ease-out, width 2s ease 3s;
-o-transition: background 3s ease-out, width 2s ease 3s;
-ms-transition: background 3s ease-out, width 2s ease 3s;
transition: background 3s ease-out, width 2s ease 3s;
}
.c-2 {
-webkit-transition: width 2s ease-out,
background 1s ease 2s,
color 1s ease-in 3s,
padding 2s ease-out 4s;
-moz-transition: width 2s ease-out,
background 1s ease 2s,
color 1s ease-in 3s,
padding 2s ease-out 4s;
-o-transition: width 2s ease-out,
background 1s ease 2s,
color 1s ease-in 3s,
padding 2s ease-out 4s;
-ms-transition: width 2s ease-out,
background 1s ease 2s,
color 1s ease-in 3s,
padding 2s ease-out 4s;
transition: width 2s ease-out,
background 1s ease 2s,
color 1s ease-in 3s,
padding 2s ease-out 4s;
}
Результат
Рубрика: CSS




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