W3C объясняет CSS-переходы достаточно просто (http:// bkaprt.com/css3/3/)[4]:
   CSS-переходы позволяют делать так, чтобы изменения значений CSS-свойств происходили плавно в течение указанного интервала времени.
   Это сглаживание анимирует изменение значения CSS, вызванное нажатием мыши, переходом в состояние focus или active или любым изменением элемента (включая изменение классов элемента).

Простой пример

   Начнем с простого примера: наложим переход на изменение фона ссылки. Когда пользователь будет наводить на ссылку, цвет ее фона будет меняться, и мы применим переход, чтобы сделать это изменение плавным. Такого эффекта раньше можно было добиться исключительно средствами Flash или JavaScript, но теперь его можно сделать, написав лишь несколько строчек на CSS.
   Разметка состоит исключительно из одной ссылки:
 
   <a href="#» class=»foo">Transition me!</a>
 
   Теперь мы объявим неактивное состояние ссылки с небольшим отступом и светло-зеленым фоном и затем укажем темно-зеленый цвет при наведении (рис. 2.01):
   a.foo {
    padding: 5px 10px;
    background: #9c3;
    }
   a.foo: hover {
    background: #690;
    }
 
   Рис. 2.01. Обычное состояние ссылки и: hover
 
   Теперь наложим переход на это изменение. Переход сгладит и анимирует изменение в течение указанного промежутка времени (рис. 2.02).
 
   Рис. 2.02. Печатная страница – не лучший способ показать анимированный переход, но на этой картинке попытались сделать именно это: плавный переход от светло– зеленого к темно-зеленому фону
 
   Ради компактности будем использовать только те браузерные префиксы, которые сейчас работают в браузерах на движке WebKit (это Safari и Chrome). Позже добавим префиксы для Firefox и Opera.
 
   a.foo {
    padding: 5px 10px;
    background: #9c3;
    -webkit-transition-property: background;
    -webkit-transition-duration: 0.3s;
    -webkit-transition-timing-function: ease;
    }
   a.foo: hover {
    background: #690;
    }
 
   В этом коде можно увидеть три составляющих перехода:
   • transition-property – свойство, на которое будет накладываться переход (в этом случае – свойство background);
   • transition-duration – продолжительность перехода (0,3 с);
   • transition-timing-function – как быстро переход осуществляется с течением времени (ease).

Временные функции (мне следовало быть внимательнее на уроках математики)

   Значение временной функции позволяет менять скорость перехода с течением времени одним из шести способов: ease, linear, ease-in, ease-out, ease-in-out и cubic-bezier, который позволяет определить произвольную временную кривую.
   Если вы, как и я, проспали все школьные уроки геометрии, не беспокойтесь. Я советую просто подставить каждое значение по очереди и увидеть, чем они отличаются друг от друга.
   Продолжительность перехода в этом примере так мала, что сложно различить все шесть способов. Для более длительных анимаций выбранная временная функция становится важным параметром, так как есть время заметить изменение скорости на протяжении анимации.
   Если сомневаетесь, знайте: значения ease (значение по умолчанию) или linear прекрасно подходят для коротких переходов.

http://bkaprt.com/css3/4/)[5]. Поддержка заявлена и в Firefox 4.0 (http://bkaprt.com/css3/5/)[6].
   Учитывая поддержку переходов на сегодняшний день и в ближайшем будущем, важно перечислять все требуемые браузерные префиксы, чтобы переходы работали в большем количестве браузеров по мере появления поддержки.

Полная запись перехода

   Ниже приводится дополненное объявление перехода, в которое добавлены префиксы -moz- и -o-, как и основное свойство transition. Как обычно, свойство без префикса ставится в самый конец, чтобы у него был наибольший вес, когда это свойство перейдет из состояния черновика в окончательную версию спецификации.
 
   a.foo {
    padding: 5px 10px;
    background: #9c3;
    -webkit-transition: background 0.3s ease;
    -moz-transition: background 0.3s ease;
    -o-transition: background 0.3s ease;
    transition: background 0.3s ease;
    }
 
   a.foo: hover {
    background: #690;
    }
   Такая запись позволяет получить сглаживание цвета фона в последних версиях Safari, Chrome и Opera, равно как и в более свежих версиях всех остальных браузеров, которые решат поддерживать переходы.

Состояния перехода

   Я помню, что слегка запутался, когда в первый раз начал экспериментировать с переходами на CSS. Казалось, что было бы логичнее расположить объявление перехода в тот фрагмент кода, где определяется состояние :hover. Оказывается, что элемент может находиться и в других состояниях – не только в :hover – и наверняка захочется, чтобы переход происходил в каждом состоянии без дублирования кода.
   Например, можно наложить переход на состояния :focus и :active. Нам не придется добавлять объявление перехода в описание каждого свойства, так как параметры перехода указываются лишь один раз – для основного состояния элемента.
   Следующий пример добавляет точно такое же переключение фона для состояния :focus.
   Таким образом, переход произойдет либо от того, что на ссылку наведут курсор, либо от того, что на нее будет наведен фокус (например, клавиатурой).
 
   a.foo { 
    padding: 5px 10px;
    background: #9c3;
    -webkit-transition: background 0.3s ease;
    -moz-transition: background 0.3s ease;
    -o-transition: background 0.3s ease;
    transition: background 0.3s ease;
    }
 
   a.foo: hover,
   a.foo: focus {
    background: #690;
    }

Переход нескольких свойств

   Предположим, что кроме цвета фона хочется также менять цвет самой ссылки и накладывать переход на это изменение. Такого эффекта можно достичь, перечисляя одновременно несколько переходов и разделяя их запятой. На каждый переход можно навесить отдельную продолжительность и собственную временную функцию (рис. 2.03). (Продолжение строки отмечено символом»).
 
   Рис. 2.03. Обычное состояние ссылки и состояние: hover
 
   a.foo { 
    padding: 5px 10px;
    background: #9c3;
    -webkit-transition: background.3s ease, color 0.2s linear;
    -moz-transition: background.3s ease, color 0.2s linear;
    -o-transition: background.3s ease, color 0.2s linear;
    transition: background.3s ease, color 0.2s linear;
    }
 
   a.foo: hover,
   a.foo: focus {
    color: #030;
    background: #690;
    }

Переход всех возможных состояний

   Вместо того чтобы перечислять несколько свойств, к которым хочется применить переход, можно использовать значение all. Тогда переход будет наложен на все возможные свойства.
   Заменим перечисление background и color на значение all. Теперь эти переходы получат одинаковую продолжительность и временную функцию.
 
   a.foo { 
    padding: 5px 10px;
    background: #9c3;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
    }
 
   a.foo: hover,
   a.foo: focus {
    color: #030;
    background: #690;
    }
 
   Использование all – удобный способ отследить все изменения, происходящие в состояниях :hover, :focus, :active, который избавляет от необходимости перечислять каждое свойство, нуждающееся в обозначении перехода.
   
Конец бесплатного ознакомительного фрагмента