В этой статье я хотел бы рассказать о том, какая замечательная штука есть у нас — CSS версии 3. И, с помощью CSS3, функций animation и transform, сегодня мы заставим бесконечно долго вращаться колеса автомобиля.
Итак, приступим:
Для урока, я взял фотографию своего любимого автомобиля Subaru Outback (для удовольствия над работой 🙂 ). Далее, в фотошопе вырезаем по контуру одно из колес (по факту — только литье). После этого создадим HTML-файл со следующим содержимым:
Вращение
В подключенном нами CSS файле мы пишем:
.car
{
background-image: url("back.jpg");
display: block;
width: 710px;
height: 576px;
}
#wheel1
{
position: relative;
top: 403px;
left: 152px;
}
#wheel2
{
position: relative;
top: 404px;
left: 450px;
}
Таким образом, мы создали, во-первых: слой, фоном которого является автомобиль, а так же два слоя-колеса. У колес класс один и тот же, так как мы их будем вращать по одному алгоритму, а ID у каждого из колес нужен для правильного позиционирования этих изображений на машине.В итоге, на фоновое изображение автомобиля у нас «встали» два колеса — на картинке ниже я выделил их мышкой. Теперь начинается магия :)К нашему классу wheel пропишем:
.wheel {
animation-name: spin;
animation-duration: 600ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
z-index: 100;
}
@keyframes spin {
from {
transform:rotate(0deg);
}
to {
transform:rotate(360deg);
}
}
И подробнее рассмотрим каждую строчку:
@keyframes spin — в этой строчке мы ставим «ключевые кадры» для нашей анимации — т.е. описываем, что анимация будет делать. spin — это название нашей анимации.
В блоке from мы прописываем, с чего начинается анимация, а в блоке to, прописываем чем заканчивается. В нашем случае, мы крутим изображения от нуля градусов до 360.
animation-name: имя нашей анимации, описанной выше.
animation-duration: продолжительность анимации, в миллисекундах.
animation-iteration-count: количество повторений анимации. В нашем случае, мы делаем ее бесконечной, хотя можно явно указать количество повторений.
animation-timing-function: функция, отвечающая за «смягчение» анимации. Например, можно установить медленную скорость в начале анимации, а далее — быструю (ease-in). В нашем случае, ставим linear — то есть, последовательная скорость на всем протяжении анимации.
z-index поставил на всякий случай — для того, чтобы колеса всегда были «над» другими слоями.
Вот и все 🙂 Основной алгоритм анимации мы рассмотрели. Для корректной работы в разных браузерах, я модифицирую css-файл, добавив к каждому из методов префиксы:
.wheel {
z-index: 100;
-webkit-animation-name: spin;
-webkit-animation-duration: 600ms;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-name: spin;
-moz-animation-duration: 600ms;
-moz-animation-iteration-count: infinite;
-moz-animation-timing-function: linear;
-ms-animation-name: spin;
-ms-animation-duration: 600ms;
-ms-animation-iteration-count: infinite;
-ms-animation-timing-function: linear;
animation-name: spin;
animation-duration: 600ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@-ms-keyframes spin {
from { -ms-transform: rotate(0deg); }
to { -ms-transform: rotate(360deg); }
}
@-moz-keyframes spin {
from { -moz-transform: rotate(0deg); }
to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
from { -webkit-transform: rotate(0deg); }
to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
from {
transform:rotate(0deg);
}
to {
transform:rotate(360deg);
}
}
Теперь наша машинка поехала :)Приятной работы с CSS3 🙂
Урок подготовил: Арсений Дугин (SKLAZER)