Обычно трансформации CSS3 запускаются с помощью средств CSS, таких как псевдо-классы :hover или :checked. Такое положение соответствует изменению состояния элемента, для которого определены трансформации. Однако, трансформации CSS можно запускать и из JavaScript кода.
Вот простой пример.
Имеем структуру разметки:
<div class="box"></div>
<input type="button" value="Нажми меня" id="bt">
Теперь воспользуемся jQuery, чтобы при нажатии кнопки для элемента div менялся класс:
$(function() {
$("#bt").click(function() {
$(".box").toggleClass("box-change");
});
});
А сами классы CSS определяем следующим образом:
.box {
width: 300px;
height: 300px;
-webkit-transition: width 2s ease, height 2s ease;
-moz-transition: width 2s ease, height 2s ease;
-o-transition: width 2s ease, height 2s ease;
-ms-transition: width 2s ease, height 2s ease;
transition: width 2s ease, height 2s ease;
}
.box-change {
width: 400px;
height: 400px;
}
Трансформации объявлены для класса .box (используются все префиксы). В нашем примере происходит изменение высоты и ширины прямоугольника.
Когда пользователь нажимает на кнопку добавляется или удаляется класс .box-change, что запускает трансформацию. Все просто.
И зачем это нужно?
Во-первых, если вы используете JavaScript в своем приложении, то для простых анимаций можно использовать данный метод. Определяем трансформации в CSS, когда нужно, запускаем их. А суматоха с использованием jQuery остается для более интересных процессов. Конечно, многие предпочитают делать анимации в JavaScript. Но простые действия вполне могут размещаться в коде CSS и не занимать место и время на реализацию.
Во-вторых, можно использовать Modernizr для определения возможностей браузера и корректировать действия для обеспечения кросс-браузерности:
$(function() {
$("#bt").click(function() {
if (Modernizr.csstransitions) {
$(".box").toggleClass("box-change");
} else {
// Делаем анимации на основе jQuery для IE 6-9
}
});
});