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>

