ÐÑполÑзование CSS-анимаÑии
ÐкÑпеÑименÑалÑÐ½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ: ÐÑо ÑкÑпеÑименÑалÑÐ½Ð°Ñ ÑеÑ
нологиÑ
Так как ÑпеÑиÑикаÑÐ¸Ñ ÑÑой ÑеÑ
нологии еÑÑ Ð½Ðµ ÑÑабилизиÑовалаÑÑ, ÑмоÑÑиÑе ÑаблиÑÑ ÑовмеÑÑимоÑÑи по Ð¿Ð¾Ð²Ð¾Ð´Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑазлиÑнÑÑ
бÑаÑзеÑаÑ
. Также замеÑÑÑе, ÑÑо ÑинÑакÑÐ¸Ñ Ð¸ поведение ÑкÑпеÑименÑалÑной ÑеÑ
нологии Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð² бÑдÑÑиÑ
веÑÑиÑÑ
бÑаÑзеÑов, вÑлед за изменениÑми ÑпеÑиÑикаÑии.
CSS-анимаÑии позволÑÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑоваÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ñ Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð¹ конÑигÑÑаÑии CSS ÑÑилей к дÑÑгой. CSS-анимаÑии ÑоÑÑоÑÑ Ð¸Ð· двÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов: ÑÑилевое опиÑание анимаÑии и Ð½Ð°Ð±Ð¾Ñ ÐºÐ»ÑÑевÑÑ ÐºÐ°Ð´Ñов, опÑеделÑÑÑÐ¸Ñ Ð½Ð°ÑалÑное, конеÑное и, возможно, пÑомежÑÑоÑное ÑоÑÑоÑние анимиÑÑемÑÑ ÑÑилей.
ÐÑÑÑ ÑÑи пÑеимÑÑеÑÑва CSS-анимаÑии пеÑед ÑÑадиÑионнÑми ÑпоÑобами:
- ÐÑоÑÑоÑа иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñий; Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ, не Ð·Ð½Ð°Ñ JavaScript.
- ÐнимаÑии бÑдÑÑ Ñ Ð¾ÑоÑо ÑабоÑаÑÑ Ð´Ð°Ð¶Ðµ пÑи ÑмеÑеннÑÑ Ð½Ð°Ð³ÑÑÐ·ÐºÐ°Ñ ÑиÑÑемÑ. ÐÑоÑÑÑе анимаÑии на JavaScript, еÑли они Ð¿Ð»Ð¾Ñ Ð¾ напиÑанÑ, ÑаÑÑо вÑполнÑÑÑÑÑ Ð¿Ð»Ð¾Ñ Ð¾. Ðвижок Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ frame-skipping и дÑÑгие ÑÐµÑ Ð½Ð¸ÐºÐ¸, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð½Ð° Ñаком вÑÑоком ÑÑовне .
- ÐозволÑÐµÑ Ð±ÑаÑзеÑÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии, Ñем ÑамÑм опÑимизиÑÑÑ Ð¿ÑоизводиÑелÑноÑÑÑ Ð¸ ÑÑÑекÑивноÑÑÑ Ð±ÑаÑзеÑа. ÐапÑимеÑ, ÑменÑÑÐ°Ñ ÑаÑÑоÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ð´Ñов анимаÑии в непÑоÑмаÑÑиваемÑÑ Ð² даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°Ñ .
ÐонÑигÑÑиÑование анимаÑии
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ CSS-анимаÑÐ¸Ñ Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² ÑÑÐ¸Ð»Ñ ÑлеменÑа, коÑоÑÑй Ñ
оÑиÑе анимиÑоваÑÑ, ÑвойÑÑво animation или его подÑвойÑÑва. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ наÑÑÑоиÑÑ ÑÑкоÑение и пÑодолжиÑелÑноÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии, а Ñакже дÑÑгие деÑали Ñого, как анимаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° пÑоÑекаÑÑ. ÐÑо не Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ Ð²Ð°Ð¼ наÑÑÑоиÑÑ Ð²Ð½ÐµÑний вид анимаÑии, коÑоÑÑй наÑÑÑаиваеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ @keyframes, ÑаÑÑмаÑÑиваемой далее в ÐпÑеделение поÑледоваÑелÑноÑÑи анимаÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ»ÑÑевÑÑ
кадÑов.
СвойÑÑво animation Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑие подÑвойÑÑва:
animation-name-
ÐпÑеделÑÐµÑ Ð¸Ð¼Ñ
@keyframes, наÑÑÑаиваÑÑего кадÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии. animation-duration-
ÐпÑеделÑÐµÑ Ð²ÑемÑ, в ÑеÑение коÑоÑого должен пÑойÑи один Ñикл анимаÑии.
animation-timing-function-
ÐаÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ ÑÑкоÑение анимаÑии.
animation-delay-
ÐаÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð·Ð°Ð´ÐµÑÐ¶ÐºÑ Ð¼ÐµÐ¶Ð´Ñ Ð²Ñеменем загÑÑзки ÑлеменÑа и вÑеменем наÑала анимаÑии.
animation-iteration-count-
ÐпÑеделÑÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво повÑоÑений анимаÑии; Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð·Ð½Ð°Ñение
infiniteÐ´Ð»Ñ Ð±ÐµÑконеÑного повÑоÑÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии. animation-direction-
ÐаÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿Ñи каждом повÑоÑе анимаÑии идÑи по алÑÑеÑнаÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¿ÑÑи, либо ÑбÑоÑиÑÑ Ð²Ñе знаÑÐµÐ½Ð¸Ñ Ð¸ повÑоÑиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ.
animation-fill-mode-
ÐаÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°ÑениÑ, иÑполÑзÑемÑе анимаÑией, до и поÑле иÑполнениÑ.
animation-play-state-
ÐозволÑÐµÑ Ð¿ÑиоÑÑановиÑÑ Ð¸ возобновиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ.
ÐпÑеделение поÑледоваÑелÑноÑÑи анимаÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ»ÑÑевÑÑ ÐºÐ°Ð´Ñов
ÐоÑле Ñого, как Ð²Ñ Ð½Ð°ÑÑÑоили вÑеменнÑе ÑвойÑÑва (пÑодолжиÑелÑноÑÑÑ, ÑÑкоÑение) анимаÑии, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð¿ÑеделиÑÑ Ð²Ð½ÐµÑний вид анимаÑии. ÐÑо делаеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð´Ð²ÑÑ
и более клÑÑевÑÑ
кадÑов поÑле @keyframes. ÐаждÑй ÐºÐ°Ð´Ñ Ð¾Ð¿Ð¸ÑÑваеÑ, как должен вÑглÑдеÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑованнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÑекÑÑий моменÑ.
Ð Ñо вÑемÑ, как вÑеменнÑе Ñ
аÑакÑеÑиÑÑики (пÑодолжиÑелÑноÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии) ÑказÑваÑÑÑÑ Ð² ÑÑилÑÑ
Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÑемого ÑлеменÑа, клÑÑевÑе кадÑÑ Ð¸ÑполÑзÑÑÑ <percentage>, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ ÑÑÐ°Ð´Ð¸Ñ Ð¿ÑоÑÐµÐºÐ°Ð½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии. 0% ознаÑÐ°ÐµÑ Ð½Ð°Ñало анимаÑии, а 100% ÐµÑ ÐºÐ¾Ð½ÐµÑ. Так как ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¾ÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ñ, Ñо Ð´Ð»Ñ Ð½Ð¸Ñ
пÑидÑмали ÑпеÑиалÑнÑе Ñлова: from и to.
ÐÑ Ñакже можеÑе добавиÑÑ ÐºÐ»ÑÑевÑе кадÑÑ, Ñ Ð°ÑакÑеÑизÑÑÑие пÑомежÑÑоÑное ÑоÑÑоÑние анимаÑии.
ÐÑимеÑÑ
ÐÑимеÑание: ÐÑимеÑÑ Ð½Ð¸Ð¶Ðµ не иÑполÑзÑÑÑ Ð¿ÑеÑикÑов Ð´Ð»Ñ CSS ÑÑилей . Webkit-бÑаÑзеÑÑ Ð¸ ÑÑаÑÑе веÑÑии дÑÑÐ³Ð¸Ñ Ð±ÑаÑзеÑов нÑждаÑÑÑÑ Ð² Ñказании пÑеÑикÑов в CSS ÑÑилÑÑ . ÐÑимеÑÑ, на коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе кликнÑÑÑ Ð² ÑвоÑм бÑаÑзеÑе, Ñакже ÑодеÑÐ¶Ð°Ñ Ð¿ÑеÑикÑÑ -webkit-.
СколÑжение ÑекÑÑа
ÐÑÐ¾Ñ Ð¿ÑоÑÑой пÑÐ¸Ð¼ÐµÑ Ð°Ð½Ð¸Ð¼Ð¸ÑÑÐµÑ ÑколÑжение ÑекÑÑа в ÑлеменÑе <p> Ð¾Ñ Ð¿Ñавого кÑÐ°Ñ Ð¾ÐºÐ½Ð° бÑаÑзеÑа.
ÐбÑаÑиÑе внимание на Ñо, ÑÑо анимаÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑделаÑÑ ÑÑÑаниÑÑ ÑиÑе, Ñем окно бÑаÑзеÑа. ÐÑого можно избежаÑÑ, помеÑÑив ÑлеменÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð°Ð½Ð¸Ð¼Ð¸ÑоваÑÑÑÑ, в конÑÐµÐ¹Ð½ÐµÑ Ð¸ ÑÑÑановив ÐµÐ¼Ñ ÑвойÑÑво overflow: hidden.
p {
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
Ð ÑÑиле Ð´Ð»Ñ ÑлеменÑа <p> Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑва animation-duration Ñказано, ÑÑо иÑполнение анимаÑии Ð¾Ñ Ð½Ð°Ñала до конÑа должно занÑÑÑ 3 Ñ , и ÑÑо Ð¸Ð¼Ñ Ð´Ð»Ñ @keyframes, опиÑÑваÑÑей ÑÐ°Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ, опÑеделено как "slidein".
Ð ÑÐ»ÐµÐ¼ÐµÐ½Ñ <p> можно добавлÑÑÑ Ð¸ дÑÑгие полÑзоваÑелÑÑкие ÑÑили, ÑÑÐ¾Ð±Ñ ÐºÐ°Ðº-Ñо ÑкÑаÑиÑÑ ÐµÐ³Ð¾, однако здеÑÑ Ð¼Ñ Ñ
оÑели пÑодемонÑÑÑиÑоваÑÑ ÑолÑко ÑÑÑÐµÐºÑ Ð°Ð½Ð¸Ð¼Ð°Ñии.
ÐлÑÑевÑе кадÑÑ Ð¾Ð¿ÑеделÑÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ñавила @keyframes. Рданном ÑлÑÑае Ð¼Ñ Ð¸Ð¼ÐµÐµÐ¼ ÑолÑко два клÑÑевÑÑ
кадÑа. ÐеÑвÑй пÑи 0% анимаÑии (from). ÐдеÑÑ Ð¼Ñ Ð¿ÑидаÑм ÑлеменÑÑ Ð»ÐµÐ²Ñй оÑÑÑÑп в 100% и ÑиÑÐ¸Ð½Ñ Ð² 300% (в ÑÑи Ñаза болÑÑе ÑиÑÐ¸Ð½Ñ ÑодиÑелÑÑкого ÑлеменÑа). ÐÑо ÑÑановиÑÑÑ Ð¿ÑиÑиной Ñого, ÑÑо пÑи пеÑвом кадÑе анимаÑии заголовок <p> наÑ
одиÑÑÑ Ð·Ð° пÑеделами пÑавого кÑÐ°Ñ Ð¾ÐºÐ½Ð° бÑаÑзеÑа .
ÐÑоÑой клÑÑевой ÐºÐ°Ð´Ñ (to) опÑеделÑÐµÑ ÐºÐ¾Ð½ÐµÑ Ð°Ð½Ð¸Ð¼Ð°Ñии, Ñ.е (100%). ÐевÑй оÑÑÑÑп ÑÑÑанавливаеÑÑÑ ÑавнÑм 0, а ÑиÑина 100%. ÐÑе вÑглÑÐ´Ð¸Ñ Ñак, бÑдÑо заголовок <p> пÑиплÑÐ²Ð°ÐµÑ Ðº Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ Ð¾ÐºÐ½Ð° бÑаÑзеÑа.
<p>
The Caterpillar and Alice looked at each other for some time in silence: at
last the Caterpillar took the hookah out of its mouth, and addressed her in a
languid, sleepy voice.
</p>
(ÐбновиÑе ÑÑÑаниÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ, или ÑÑлкниÑе по кнопке CodePen, ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑпÑоизвеÑÑи ÐµÑ Ð² окне CodePen)
Ðобавление дÑÑÐ³Ð¸Ñ ÐºÐ»ÑÑевÑÑ ÐºÐ°Ð´Ñов
ÐавайÑе добавим дÑÑгие клÑÑевÑе кадÑÑ Ð² пÑедÑдÑÑий пÑимеÑ. Скажем, Ð¼Ñ Ñ Ð¾Ñим ÑÑÐ¾Ð±Ñ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа заголовка вÑеменно ÑвелиÑивалÑÑ Ð¿Ð¾ меÑе пÑÐ¾Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð²Ð»ÐµÐ²Ð¾, а поÑом возвÑаÑалÑÑ Ðº пеÑвонаÑалÑÐ½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ . ÐÑо легко ÑеализоваÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑледÑÑÑего клÑÑевого кадÑа:
75% {
font-size: 300%;
margin-left: 25%;
width: 150%;
}
p {
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
75% {
font-size: 300%;
margin-left: 25%;
width: 150%;
}
}
<p>
The Caterpillar and Alice looked at each other for some time in silence: at
last the Caterpillar took the hookah out of its mouth, and addressed her in a
languid, sleepy voice.
</p>
ÐÑо говоÑÐ¸Ñ Ð±ÑаÑзеÑÑ Ð¾ Ñом, ÑÑо пÑи 75% вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии, ÑÑиÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ 300%, а ÑиÑина 150%.
(ÐбновиÑе ÑÑÑаниÑÑ, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ, или ÑÑлкниÑе по кнопке CodePen, ÑÑÐ¾Ð±Ñ Ð²Ð¾ÑпÑоизвеÑÑи ÐµÑ Ð² окне CodePen)
ÐаÑÑÑойка повÑоÑениÑ
ЧÑÐ¾Ð±Ñ Ð½Ð°ÑÑÑоиÑÑ Ð¿Ð¾Ð²ÑоÑение, нÑжно добавиÑÑ ÑвойÑÑво animation-iteration-count и задаÑÑ ÐµÐ¼Ñ Ð·Ð½Ð°Ñение, Ñавное нÑÐ¶Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑÐ²Ñ Ð¿Ð¾Ð²ÑоÑений анимаÑий . Рданном ÑлÑÑае давайÑе ÑÑÑановим знаÑение infinite Ð´Ð»Ñ Ð±ÐµÑконеÑного повÑоÑениÑ:
p {
animation-duration: 3s;
animation-name: slidein;
animation-iteration-count: infinite;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
<p>
The Caterpillar and Alice looked at each other for some time in silence: at
last the Caterpillar took the hookah out of its mouth, and addressed her in a
languid, sleepy voice.
</p>
Ðвижение ÑекÑÑа впÑаво и влево
ÐÑак, Ð¼Ñ Ð½Ð°ÑÑÑоили повÑоÑение, но полÑÑили неÑÑо ÑÑÑанное: ÑекÑÑ Ð¿Ñи каждом повÑоÑении Ñнова "запÑÑгиваеÑ" за кÑай окна бÑаÑзеÑа. То, Ñего Ð¼Ñ Ñ
оÑим, Ñак ÑÑо ÑÑÐ¾Ð±Ñ ÑекÑÑ Ð´Ð²Ð¸Ð³Ð°Ð»ÑÑ Ð²Ð»ÐµÐ²Ð¾ и впÑаво. ÐÑого легко доÑÑиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑÑановки ÑвойÑÑÐ²Ñ animation-direction знаÑÐµÐ½Ð¸Ñ alternate:
p {
animation-duration: 3s;
animation-name: slidein;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
<p>
The Caterpillar and Alice looked at each other for some time in silence: at
last the Caterpillar took the hookah out of its mouth, and addressed her in a
languid, sleepy voice.
</p>
ÐÑполÑзование ÑоÑÑкодов
ШоÑÑкод animation полезен Ð´Ð»Ñ Ñкономии меÑÑа в коде. ÐапÑимеÑ, пÑавило, коÑоÑое Ð¼Ñ Ð¸ÑполÑзÑем в ÑÑой ÑÑаÑÑе:
p {
animation-duration: 3s;
animation-name: slidein;
animation-iteration-count: infinite;
animation-direction: alternate;
}
можно замениÑÑ Ð½Ð°:
p {
animation: 3s infinite alternate slidein;
}
ÐÑимеÑание:
ÐодÑобнее об ÑÑом на ÑÑÑаниÑе Ñаздела animation
УÑÑановка неÑколÑÐºÐ¸Ñ Ð·Ð½Ð°Ñений ÑвойÑÑвам анимаÑии
CSS-ÑвойÑÑво анимаÑии Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÑколÑко знаÑений, ÑазделÑннÑÑ Ð·Ð°Ð¿ÑÑÑми. ÐÑо иÑполÑзÑеÑÑÑ, ÑÑÐ¾Ð±Ñ ÑказаÑÑ Ð½ÐµÑколÑко знаÑений анимаÑии в одном пÑавиле и ÑÑÑановиÑÑ ÑазнÑÑ Ð¿ÑодолжиÑелÑноÑÑÑ, ÑиÑло повÑоÑений и Ñ.д., Ð´Ð»Ñ ÑазлиÑнÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñий. РаÑÑмоÑÑим неÑколÑко пÑимеÑов, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÑазниÑÑ.
РпеÑвом пÑимеÑе Ñ ÑвойÑÑва имени анимаÑии ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ ÑÑи знаÑениÑ, Ñ ÑвойÑÑв пÑодолжиÑелÑноÑÑи и колиÑеÑÑва повÑоÑений â по одномÑ. Ð ÑÑом ÑлÑÑае Ñ Ð²ÑÐµÑ ÑÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñий Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð°Ñ Ð¿ÑодолжиÑелÑноÑÑÑ Ð¸ ÑиÑло повÑоÑений:
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 3s;
animation-iteration-count: 1;
Ðо вÑоÑом пÑимеÑе ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ ÑÑи знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из ÑвойÑÑв. Ð ÑÑом ÑлÑÑае ÐºÐ°Ð¶Ð´Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°ÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ Ñ ÑооÑвеÑÑÑвÑÑÑими по поÑÑÐ´ÐºÑ Ð·Ð½Ð°ÑениÑми в каждом ÑвойÑÑве, Ñак, напÑимеÑ, fadeInOut Ð¸Ð¼ÐµÐµÑ Ð¿ÑодолжиÑелÑноÑÑÑ 2.5 Ñ Ð¸ колиÑеÑÑво повÑоÑений 2, и Ñ.д.
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s, 1s;
animation-iteration-count: 2, 1, 5;
Ð ÑÑеÑÑем пÑимеÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ анимаÑии, но два знаÑÐµÐ½Ð¸Ñ Ð¿ÑодолжиÑелÑноÑÑи и колиÑеÑÑва повÑоÑений. Ð ÑлÑÑае, когда колиÑеÑÑва знаÑений недоÑÑаÑоÑно Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ анимаÑии, знаÑÐµÐ½Ð¸Ñ Ð±ÐµÑÑÑÑÑ ÑиклиÑеÑки Ð¾Ñ Ð½Ð°Ñала до конÑа. ÐапÑимеÑ, Ñ fadeInOut длиÑелÑноÑÑÑ Ð±ÑÐ´ÐµÑ 2.5s, а moveLeft300px â 5s. ÐнаÑÐµÐ½Ð¸Ñ Ð¿ÑодолжиÑелÑноÑÑи законÑилиÑÑ, ÑепеÑÑ Ð¾Ð½Ð¸ беÑÑÑÑÑ ÑнаÑала â bounce полÑÑÐ¸Ñ Ð¿ÑодолжиÑелÑноÑÑÑ 2.5s. ÐнаÑение колиÑеÑÑва повÑоÑений (а Ñакже дÑÑгие ÑказаннÑе ÑвойÑÑва) бÑÐ´ÐµÑ Ð¾Ð¿Ñеделено Ñаким же обÑазом.
animation-name: fadeInOut, moveLeft300px, bounce;
animation-duration: 2.5s, 5s;
animation-iteration-count: 2, 1;
ÐÑполÑзование ÑобÑÑий анимаÑии
ÐÑ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй конÑÑÐ¾Ð»Ñ Ð½Ð°Ð´ анимаÑией, а Ñакже полезнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ней, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑобÑÑий анимаÑии. ÐÑи ÑобÑÑиÑ, пÑедÑÑавленнÑе обÑекÑом AnimationEvent, можно иÑполÑзоваÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, когда наÑинаеÑÑÑ Ð¸ заканÑиваеÑÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑÐ¸Ñ Ð¸Ð»Ð¸ наÑинаеÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¸ÑеÑаÑиÑ. Ðаждое ÑобÑÑие ÑодеÑÐ¶Ð¸Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, когда оно пÑоизоÑло, а Ñакже Ð¸Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии, коÑоÑÐ°Ñ Ð²Ñзвала ÑобÑÑие.
ÐÑ Ð±Ñдем модиÑиÑиÑоваÑÑ ÑекÑÑ, ÑÑÐ¾Ð±Ñ Ð²ÑводиÑÑ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ каждом ÑобÑÑии анимаÑии. Так Ð¼Ñ Ñможем ÑвидеÑÑ, как она ÑабоÑаеÑ.
Ðобавление CSS
ÐаÑнÑм Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ CSS. ÐнимаÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð´Ð»Ð¸ÑÑÑÑ 3 ÑекÑндÑ, бÑÐ´ÐµÑ Ð½Ð°Ð·ÑваÑÑÑÑ "slidein", бÑÐ´ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ 3 Ñаза, а Ñакже знаÑение animation-direction ÑÑÑановлено alternate. РклÑÑевÑÑ
кадÑаÑ
@keyframes ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ñакие знаÑÐµÐ½Ð¸Ñ ÑиÑÐ¸Ð½Ñ Ð¸ левого оÑÑÑÑпа, ÑÑо ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ ÑколÑзиÑÑ Ð¿Ð¾ ÑкÑанÑ.
.slidein {
-moz-animation-duration: 3s;
-webkit-animation-duration: 3s;
animation-duration: 3s;
-moz-animation-name: slidein;
-webkit-animation-name: slidein;
animation-name: slidein;
-moz-animation-iteration-count: 3;
-webkit-animation-iteration-count: 3;
animation-iteration-count: 3;
-moz-animation-direction: alternate;
-webkit-animation-direction: alternate;
animation-direction: alternate;
}
@-moz-keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
@-webkit-keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
Ðобавление обÑабоÑÑика ÑобÑÑÐ¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии
ÐÑдем иÑполÑзоваÑÑ JavaScript Ð´Ð»Ñ Ð¾ÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð²ÑÐµÑ ÑÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½ÑÑ ÑобÑÑий анимаÑии. СледÑÑÑий код конÑигÑÑиÑÑÐµÑ Ð¾Ð±ÑабоÑÑик; Ð¼Ñ Ð²ÑзÑваем его пÑи пеÑвой загÑÑзке докÑменÑа.
var e = document.getElementById("watchme");
e.addEventListener("animationstart", listener, false);
e.addEventListener("animationend", listener, false);
e.addEventListener("animationiteration", listener, false);
e.className = "slidein";
ÐÑо доволÑно ÑÑандаÑÑнÑй код; Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð² докÑменÑаÑии element.addEventListener(). ÐоÑледнее, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ - ÑÑо ÑÑÑановка клаÑÑа "slidein" Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÑемого ÑлеменÑа; Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ ÑÑо, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ.
ÐоÑемÑ? ÐоÑÐ¾Ð¼Ñ ÑÑо в наÑем ÑлÑÑае ÑобÑÑие animationstart пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÐºÐ°Ðº ÑолÑко анимаÑÐ¸Ñ ÑÑаÑÑÑеÑ, и ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑанÑÑе, Ñем иÑполнÑеÑÑÑ Ð½Ð°Ñ ÑÑенаÑий. Так Ð¼Ñ Ñможем конÑÑолиÑоваÑÑ Ð½Ð°Ñало анимаÑии ÑамоÑÑоÑÑелÑно поÑÑедÑÑвом вÑÑавки клаÑÑа "slidein" Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÑемого ÑлеменÑа.
РегиÑÑÑаÑÐ¸Ñ ÑобÑÑий
СобÑÑÐ¸Ñ Ð±ÑдÑÑ Ð¿ÐµÑедаваÑÑÑÑ ÑÑнкÑии listener(), показанной ниже.
function listener(e) {
var l = document.createElement("li");
switch (e.type) {
case "animationstart":
l.innerHTML = "Started: elapsed time is " + e.elapsedTime;
break;
case "animationend":
l.innerHTML = "Ended: elapsed time is " + e.elapsedTime;
break;
case "animationiteration":
l.innerHTML = "New loop started at time " + e.elapsedTime;
break;
}
document.getElementById("output").appendChild(l);
}
ÐÑÐ¾Ñ ÐºÐ¾Ð´ Ñакже оÑÐµÐ½Ñ Ð¿ÑоÑÑ. ÐÑÐ¾Ñ ÐºÐ¾Ð´ ÑÐ»ÐµÐ´Ð¸Ñ Ð·Ð° event.type, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ Ñип ÑобÑÑиÑ, и добавлÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ <ul>, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð»Ð¾Ð³Ð¸ÑоваÑÑ Ð¿ÑоизоÑедÑее ÑобÑÑие.
ÐÑвод, когда анимаÑÐ¸Ñ Ð·Ð°ÐºÐ¾Ð½ÑиÑÑÑ, бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ð¿ÑимеÑно ÑледÑÑÑим обÑазом:
- Started: elapsed time is 0
- New loop started at time 3.01200008392334
- New loop started at time 6.00600004196167
- Ended: elapsed time is 9.234000205993652
ÐбÑаÑиÑе внимание, ÑÑо вÑемÑ, Ñказанное в вÑводе, и вÑемÑ, коÑоÑое Ð¼Ñ Ñказали в ÑÑилÑÑ
, не ÑовпадаÑÑ. Также обÑаÑиÑе внимание, ÑÑо поÑле оконÑÐ°Ð½Ð¸Ñ Ð¸ÑеÑаÑии не поÑÑлаеÑÑÑ ÑобÑÑие animationiteration ; вмеÑÑо него поÑÑлаеÑÑÑ ÑобÑÑие animationend.
HTML
Ради полноÑÑ ÐºÐ°ÑÑÐ¸Ð½Ñ Ð¿ÑиведÑм код ÑазмеÑки HTML. Ð ÑазмеÑке имееÑÑÑ Ñег ul, в коÑоÑÑй и вÑводиÑÑÑ Ð²ÑÑ Ð¸Ð½ÑоÑмаÑиÑ:
<body>
<h1 id="watchme">Watch me move</h1>
<p>
This example shows how to use CSS animations to make <code>p</code> elements
move across the page.
</p>
<p>
In addition, we output some text each time an animation event fires, so you
can see them in action.
</p>
<ul id="output"></ul>
</body>