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>

