В этом посте речь пойдет о самых фундаментальных и в то же время весьма интересных свойствах спецификации каскадных таблиц стилей CSS3. Нововведения достаточно функциональны и просты, с их помощью можно сократить работу по написанию JavaScript кода.
Transform
Свойство transform — применяет трансформацию к элементу (можно применить несколько трансформаций, задавая значения через пробел). Элемент можно передвигать, масштабировать, поворачивать и наклонять.
Допустимые значения:
none
— элемент не трансформируется- <функция> — элемент трансформируется согласно одной из следующих функций:
matrix(<число>, <число>, <число>, <число>, <число>, <число>)
— определяет матрицу, на которую будет умножена матрица, составленная из исходных координат элемента для получения новых координатmatrix3d(<число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>, <число>)
— определяет 3d матрицу, на которую будет умножена матрица, составленная из исходных координат элемента для получения новых координатtranslate(<значение>)
— определяет сдвиг элемента. Можно задать два сдвига, через запятую: первый по оси x, второй по оси y. Если задано только одно значение, сдвиг по оси y будет равен 0translate3d(<значение>, <значение>, <значение>)
— определяет сдвиг элемента по оси x, по оси y и по оси ztranslateX(<значение>)
— определяет сдвиг элемента по оси xtranslateY(<значение>)
— определяет сдвиг элемента по оси ytranslateZ(<значение>)
— определяет сдвиг элемента по оси zscale(<число>)
— определяет масштабирование элемента. Можно задать два числа через запятую: первый по оси x, второй по оси y. Если задано только одно значение, масштаб по оси y будет равен масштабу по оси xscale3d(<число>, <число>, <число>)
— определяет масштаб элемента по оси x, по оси y и по оси zscaleX(<число>)
— определяет масштаб элемента по оси xscaleY(<число>)
— определяет масштаб элемента по оси yscaleZ(<число>)
— определяет масштаб элемента по оси zrotate(<угол>)
— определяет поворот элемента на заданный угол относительно центра поворота, заданного свойством transform-originrotate3d(<число>, <число>, <число>, <угол>)
— определяет поворот элемента на заданный угол по направлению вектора, заданного первыми тремя параметрами. Элементповорачиваетсяотносительноточки, заданнойсвойством transform-originrotateX(<число>)
— определяет угол поворота элемента по оси xrotateY(<число>)
— определяет угол поворота элемента по оси yrotateZ(<число>)
— определяет угол поворота элемента по оси zskew(<угол>)
— определяет наклон элемента. Можно задать два числа через запятую: первый по оси x, второй по оси y. Если задано только одно значение, наклон по оси y будет равен 0skewX(<угол>)
— определяет угол наклона элемента по оси x.skewY(<угол>)
— определяет угол наклона элемента по оси y.perspective(<глубина>)
— расстояние в пикселях от зрителя.
Примеры использования:
box 1 | Translated to the right: -webkit-transform: translate(3em,0); |
box 2 | Rotated 30 degrees with the clock: -webkit-transform: rotate(30deg); |
box 3 | Translated to the left and down slightly: -webkit-transform: translate(-3em,1em); |
box 4 | Scaled to twice its original size: -webkit-transform: scale(2); |
#box1:hover + #box2 { -webkit-transform: rotate(360deg); -moz-transform: rotate(360deg); -o-transform: rotate(360deg); -ms-transform: rotate(360deg); left: 627px; background: yellow; }
Transition
Итоговая сводная таблица:
transition-property |
Свойство, к которому применяем анимацию | Практически любое свойство CSS: color, background, width, font-size и т.д. |
transition-duration |
Длительность анимации | Время в секундах: 0.5s — полсекунды, 60s — одна минута и т.д. |
transition-timing-function |
Временная функция, используемая для анимации | ease, linear, ease-in-out, ease-in, ease-out, cubic-bezier |
transition-delay |
Задержка анимации | Время в секундах: 0.5s — полсекунды, 60s — одна минута и т.д. |
Animation
Для задания CSS3 анимации элементу используется CSS3 свойство animation. Это свойство — сокращенная запись различных свойств анимации:
animation-name
— задает имя анимацииanimation-duration
— задает время проигрывания анимацииanimation-timing-function
— описывает метод расчета промежуточных значений свойств для анимацииanimation-delay
— задает задержку анимацииanimation-iteration-count
— задает количество циклов анимацииanimation-direction
— задает направление анимацииanimation-play-state
— определяет, проигрывается ли анимация или стоит на паузе
Эти же свойства с вендорным префиксом -webkit-:
-webkit-animation-name
— задает имя анимации-webkit-animation-duration
— задает время проигрывания анимации-webkit-animation-timing-function
— описывает метод расчета промежуточных значений свойств для анимации-webkit-animation-delay
— задает задержку анимации-webkit-animation-iteration-count
— задает количество циклов анимации-webkit-animation-direction
— задает направление анимации-webkit-animation-play-state
— определяет, проигрывается ли анимация или стоит на паузе
Kayframes
Примеры использования:
[css]@-webkit-keyframesmovingbox{
from{left:90%;-webkit-transform: rotate(0deg);}
to{left:10%;-webkit-transform: rotate(360deg);}
}
@-webkit-keyframesmovingbox{
0%{left:90%;}
50%{left:10%;}
100%{left:90%;}
}
@-webkit-keyframes NAME-YOUR-ANIMATION {
0%{ opacity:0;}
100%{ opacity:1;}
}
@-moz-keyframes NAME-YOUR-ANIMATION {
0%{ opacity:0;}
100%{ opacity:1;}
}
@-ms-keyframes NAME-YOUR-ANIMATION {
0%{ opacity:0;}
100%{ opacity:1;}
}
#box {
-webkit-animation: NAME-YOUR-ANIMATION 5s infinite;
-moz-animation: NAME-YOUR-ANIMATION 5s infinite;
-ms-animation: NAME-YOUR-ANIMATION 5s infinite;
}[/css]
На этом на сегодня, пожалуй, все. Спасибо за внимание, надеюсь пост был полезен.