transition
Универсальное свойство, которое позволяет одновременно задать значения transition-property, transition-duration,transition-timing-function и transition-delay. Устанавливает эффект перехода между двумя состояниями элемента, они могут быть определены с помощью псевдоэлемента :hover или :active, а также динамически через JavaScript.
<переход> = [ none | <transition-property> ] || <transition-duration> || <transition-timing-function> || <transition-delay> transition:all 0s ease 0s - значение по умолчанию
transition-property
Устанавливает имя стилевого свойства, значение которого будет отслеживаться для создания эффекта перехода.
transition-property: none | all | <свойство> [,<свойство>]*
Значения
- none
- Никакое свойство не задано.
- all
- Все свойства будут отслеживаться.
- <свойство>
- Название стилевого свойства, регистр при его написании не учитывается. При указании нескольких свойств они перечисляются друг за другом через запятую.
- пример:
-
-webkit-transition-property: top;
transition-timing-function
Устанавливает, насколько быстро должно изменяться значение стилевого свойство для которого применяется эффект перехода.
transition-timing-function представляет собой математическую функцию, показывающую, как быстро по времени меняется указанное через transition-property значение свойства. Начальная точка имеет координаты 0.0, 0.0, конечная — 1.0, 1.0, при этом функция по оси ординат может превышать эти значения в большую или меньшую сторону
Синтаксис
transition-timing-function: ease|ease-in|ease-out|ease-in-out|linear|step-start|step-end|steps|cubic-bezier
Значения
- ease
- Анимация начинается медленно, затем ускоряется и к концу движения опять замедляется. Аналогично cubic-bezier(0.25,0.1,0.25,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).
- linear
- Одинаковая скорость от начала и до конца.
- step-start
- Как таковой анимации нет. Стилевые свойства сразу же принимают конечное значение.
- step-end
- Как таковой анимации нет. Стилевые свойства находятся в начальном значении заданное время, затем сразу же принимают конечное значение.
- steps
- Ступенчатая функция, имеющая заданное число шагов.
transition-timing-function: steps(<число>, start | end)
- Здесь: <число> — целое число больше нуля; start — задаёт полунепрерывную снизу функцию;end — задаёт полунепрерывную сверху функцию.
- cubic-bezier
- Задаёт функцию движения в виде кривой Безье.
- Полное описание смотрите тут http://htmlbook.ru/css/transition-timing-function
transition-delay
Свойство transition-delay устанавливает время ожидания перед запуском эффекта перехода. Значение 0s или 0msзапускает анимацию сразу же. Отрицательное значение также включает анимацию без задержек, но может привести к изменению вида начала анимации.
Допустимо указывать несколько значений, перечисляя их через запятую. Каждое значение будет применяться к свойству, заданному в параметрах transition-property.
Синтаксис
transition-delay: <время> [,<время>]*
transform
Трансформирует элемент, в частности, позволяет его масштабировать, вращать, сдвигать, наклонять, а также комбинировать виды трансформаций.
Синтаксис
transform: <функция> [<функция>]* | none
Значения
- функция
- Функция трансформации.
- none
- Отменяет действие трансформации.
Функции трансформации
matrix
Задаёт матрицу преобразований.
rotate
Поворот элемента на заданный угол относительно точки трансформации, задаваемой свойством transform-origin.
transform: rotate(<угол>)
пример
div { -ms-transform: rotate(20deg); /* IE 9 */ -webkit-transform: rotate(20deg); /* Safari */ transform: rotate(20deg); }
scale
Масштаб элемента по горизонтали и вертикали.
transform: scale(sx[, sy]);
Значение больше 1 увеличивает масштаб элемента, меньше 1 — уменьшает масштаб.
пример
div { -ms-transform: scale(2,3); /* IE 9 */ -webkit-transform: scale(2,3); /* Safari */ transform: scale(2,3); }
scaleX
Масштабирует элемент по горизонтали.
transform: scaleX(sx);
scaleY
Масштабирует элемент по вертикали.
transform: scaleY(sy);
skewX
Наклоняет элемент на заданный угол по вертикали.
transform: skewX(<угол>)
пример
div { -ms-transform: skewX(20deg); /* IE 9 */ -webkit-transform: skewX(20deg); /* Safari */ transform: skewX(20deg); }
skewY
Наклоняет элемент на заданный угол по горизонтали.
transform: skewY(<угол>)
пример
div { -ms-transform: skewY(20deg); /* IE 9 */ -webkit-transform: skewY(20deg); /* Safari */ transform: skewY(20deg); }
translate
Сдвигает элемент на заданное значение по горизонтали и вертикали.
transform: translate(tx[, ty])
пример
div { -ms-transform: translate(50px,100px); /* IE 9 */ -webkit-transform: translate(50px,100px); /* Safari */ transform: translate(50px,100px); }
translateX
Сдвигает элемент по горизонтали на указанное значение. Положительное значение сдвигает вправо, отрицательное влево.
transform: translateX(tx)
translateY
Сдвигает элемент по вертикали на указанное значение. Положительное значение сдвигает вниз, отрицательное вверх.
transform: translateY(ty)
CSS Единицы измерения
CSS имеет различные единицы измерения.
Единтца измерения | Описание |
em | Размер относительно размера шрифта. 2em означает что размер задан в два размера шрифта |
rem | Размер шрифта body |
vw | Один процент от ширины окна просмотра |
vh | Один процент от высоты окна просмотра |
vmin | Один процент от минимальной ширины окна просмотра |
vmax | Один процент от минимальной высоты окна просмотра |
% | |
px | пиксели (1px = 1/96thот 1дюйма) |
Замечание: em и rem очень часто применяются на практике
Транзакции и анимация.
Пример
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>transition</title> <style> #bar { top:-5.5em; right:5em; /* Положение */ padding: .5em; /* Поля */ margin: 0; /* Отступы */ position: absolute; /* Абсолютное позиционирование */ width: 2em; /* Ширина */ background: #333; /* Цвет фона */ color: #fff; /* Цвет текста */ text-align: center; /* Выравнивание по центру */ /* Переход */ -webkit-transition: top 1s ease-out 0.5s; -moz-transition: top 1s ease-out 0.5s; -o-transition: top 1s ease-out 0.5s; transition: top 1s ease-out 0.5s; } #bar:hover { top: 0; } </style> </head> <body> <ul id="bar"> <li>1</li><li>2</li> <li>3</li><li>4</li> <li>↓</li> </ul> </body> </html>
В данном примере при наведении курсора на стрелку, раскрывается блок с числами.
Плавная трансформация | CSS свойство transition
Псевдокласс :hover позволяет элементам быть менее статичными, изменяя их свойства при наведении мышки.
<style> .blok { background: #808991; color: #FFF; cursor: pointer; } .blok:hover { background: #D0D941; color: #000; } </style> <div class="blok">при наведении мышки</div>
Благодаря свойству transition можно сделать плавный переход между состояниями элемента.
плавная смена цвета туда-обратно
<style> .transition { transition: 3s; } </style> <div class="blok transition">плавная смена цвета туда-обратно</div>
плавная смена при наведении на div
<style> .transition2:hover { transition: 3s; } </style> <div class="blok transition2">плавная смена при наведении на div</div>
плавная смена, когда курсор выведен за пределы div
<style> .transition3:not(:hover) { transition: 3s;} </style> <div class="blok transition3">плавная смена, когда курсор выведен за пределы div</div>
сохранение положения :hover
<style> .transition4 { transition: 0s 9999999s; } .transition4:hover { transition: 3s; } </style> <div class="blok transition4">сохранение положения :hover</div>
Свойство | Описание |
transition-property | свойство [список возможных], на которое распространяется трансформация. При необходимости воздействия на несколько свойств, они перечисляются через запятую.
all width, background width none |
transition-duration | время, в течении которого происходит трансформация.
0s 0.5s 1s 5s |
transition-delay | время, по истечении которого происходит трансформация.
0s 0.5s 1s 5s |
transition-timing-function | указывает как должны изменяться промежуточные значения в кривой времени. Например, начинать развиваться медленно, а потом ускоряться. Трансформация может происходить и плавно на протяжении всего участка времени [cubic-bezier], и рывками в заданное количество шагов [steps].
ease linear ease-in ease-out ease-in-out cubic-bezier(.1, .9, .9, 1.5) cubic-bezier(.1, .9, .9, .1) cubic-bezier(.1, .9, .9, -1.5) cubic-bezier(.1, -1.5, .1, 2.5) step-start step-end steps(4, end) steps(4) steps(4, start) |
плавная смена цвета CSS
<style> .transition1 { transition: background-color 3s cubic-bezier(0.1, 0.8, 0.5, 2), color 3s 1s linear; /* или */ transition-property: background-color, color; transition-duration: 3s; transition-delay: 0s, 1s; transition-timing-function: cubic-bezier(0.1, 0.8, 0.5, 2), linear;} </style> <div class="blok transition1">плавная смена цвета CSS</div>
Популярные сочетания transition с другими свойствами, например, opacity или transform.
изменение ширины width
<div class="transition-width">изменение ширины width</div>
изменение прозрачности opacity
<div class="transition-opacity">изменение прозрачности opacity</div>
кручение CSS
<div class="transition-rotate">кручение transform: rotate(360deg);</div>
увеличивавшие объекта CSS
<div class="transition-scale">увеличивавшие объекта в два раза transform: scale(2);</div>
смещение вниз CSS
<div class="transition-translate">смещение вниз position: relative;</div>
<style> div.blok6 { cursor: pointer; position: relative; text-align: center; } div.blok6:before { background-color: rgba(255, 255, 255, 0.2); border-radius: 10px; box-shadow: 0 0 10px #A0A9B1 inset; content: attr(data-title); font-family: Tahoma; font-size: 32px; height: 48px; line-height: 48px; opacity: 0; padding: 0 10px; position: absolute; right: 50px; top: 20px; -moz-transition: all 1s; -webkit-transition: all 1s; -o-transition: all 1s; transition: all 1s; } div.blok6:hover:before { right: 160px; opacity: 1; top: 140px; } div.blok6 img { width: 400px; -moz-transition: all 1s; -webkit-transition: all 1s; -o-transition: all 1s; transition: all 1s; } div.blok6:hover img { width: 500px; } div.blok6:after { content: attr(data-zagolovok); display: block; font-weight: bold; font-family: Helvetica; font-size: 20px; text-align: center; } </style> <div class="blok6" data-title="всплывающий текст" data-zagolovok="подпись под изображением"> <img src="адрес_изображения" /></div>