В CSS3 имеются параметры (свойства), посредством которых можно трансформировать (поворачивать, масштабировать и т.д.) элементы страницы, а также анимировать (плавно изменять во времени) их свойства.
При этом можно обойтись без сценариев на JavaScript и SVG. В браузерах (Opera 18 и Chrome 31) в именах CSS-свойств пока требуется указывать специальные (вендорные) префиксы -o- и -webkit- соответственно (например, -o-transform и -webkit-transform).
Трансформации в CSS3 задаются посредством свойства transform.
Выберите в списках вид трансформации (значение свойства transform) и ее центр (значение свойства transform-origin) и посмотрите результат ее применения к элементу <div>, содержащему текст и картинку.
Под списками отображаются CSS-свойства (без вендорных префиксов), соответствующее выбранной трансформации. Каждая трансформация здесь применяется к исходному элементу, а не к результату предыдущей трансформации.
Вид трансформации:
Центр трансформации:
Несколько трансформаций вместе
В качестве значения свойства transform можно указать несколько видов элементарных трансформаций:
rotate(угол) — поворот;
skewX(угол), skewY(угол) — наклон по горизонтали и вертикали соответственно;
scale(kx,ky) — масштабирование; в частности, scale(-1,1) и scale(1,-1) — отражение по горизонтали и вертикали соответственно без изменения масштаба;
translateX(длина), translateY(длина) — перенос по горизонтали и вертикали соответственно;
none — отсутствие трансформации.
Например, следующий параметр задает две элементарные трансформации — поворот и масштабирование:
transform: rotate(20deg) scale(1.2);
Примечание
Для более ранних версий Firefox можно можно было использовать в качестве значения свойства transform функцию matrix(), задающую матричное преобразование.
О смысле матричных преобразований я уже писал в связи с SVG (масштабируемая векторная графика).
Вот вид матрицы 2d-трансформации и соответствующее свойство CSS3:
Особенность применения matrix(), как и др. функций трансформации, в CSS заключается в необходимости указывать единицы измерений (например, deg, px, %).
Графические фильтры трансформации CSS для старых IE
IE 10+ поддерживает свойство transform, IE 9 — нет, а IE 8 совсем не поддерживает CSS3.
Однако в старых IE для трансформаций можно применять специальные графические фильтры, которые не поддерживаются другими браузерами.
Среди фильтров есть такой, значением которого является matrix().
В IE8+ фильтр матричной трансформации задается так:
Поскольку здесь не указываются элементы a13 и a23 матрицы трансформации, то данный фильтр не выполняет перенос (translateX и translateY).
Другие же преобразования, такие как масштабирование, поворот, наклон и отражения, могут быть выполнены.
Это элемент, к которому применяются трасформации:
CSS-анимация
Анимация прямоугольника при наведении на него мыши
Для анимации в CSS3 предназначен ряд параметров, из которых важнейшим является transition.
В качестве значения можно задать строку, содержащую список (через запятую) элементов, в каждом из которых указаны имя анимируемого параметра CSS, длительность анимации и ее характер.
Например, если требуется плавно изменить цвет фона и ширину элемента, то применяется такой параметр:
Здесь приведен пример анимации прямоугольника (элемента <div>), точнее, изменения его размеров, цвета заливки и поворота.
Анимация начинается при наведении мыши, а заканчивается в соответствии с указанными длительностями.
Характер анимации задается ключевым словом, соотетствующим некоторой кривой Безье: ease, ease-in, ease-out, ease-in-out, linear. Можно еще непосредственно задать кривую Безье (cubic-bezier(x1,y1,x2,y2)).
Вот HTML- и CSS-код анимации прямоугольника: