ÐÑполÑзование CSS пеÑÐµÑ Ð¾Ð´Ð¾Ð²
ÐкÑпеÑименÑалÑÐ½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ: ÐÑо ÑкÑпеÑименÑалÑÐ½Ð°Ñ ÑеÑ
нологиÑ
Так как ÑпеÑиÑикаÑÐ¸Ñ ÑÑой ÑеÑ
нологии еÑÑ Ð½Ðµ ÑÑабилизиÑовалаÑÑ, ÑмоÑÑиÑе ÑаблиÑÑ ÑовмеÑÑимоÑÑи по Ð¿Ð¾Ð²Ð¾Ð´Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑазлиÑнÑÑ
бÑаÑзеÑаÑ
. Также замеÑÑÑе, ÑÑо ÑинÑакÑÐ¸Ñ Ð¸ поведение ÑкÑпеÑименÑалÑной ÑеÑ
нологии Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð² бÑдÑÑиÑ
веÑÑиÑÑ
бÑаÑзеÑов, вÑлед за изменениÑми ÑпеÑиÑикаÑии.
CSS transitions пÑедоÑÑавлÑÑÑ ÑпоÑоб конÑÑолиÑоваÑÑ ÑкоÑоÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии, пÑи изменении CSS-ÑвойÑÑв. ÐмеÑÑо Ñого, ÑÑÐ¾Ð±Ñ ÑвойÑÑво пÑименилоÑÑ ÑÑазÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ ÑÑо дейÑÑвие пÑоиÑÑ Ð¾Ð´ÑÑим в ÑеÑение какого-Ñо моменÑа вÑемени. ÐапÑимеÑ, еÑли Ð²Ñ ÑмениÑе ÑÐ²ÐµÑ ÑлеменÑа Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾ на ÑÑÑнÑй, изменение пÑоизойдÑÑ Ð¼Ð¾Ð¼ÐµÐ½ÑалÑно, а Ð²Ð¾Ñ Ñ CSS transitions, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÑоизойдÑÑ Ð·Ð° вÑеменнÑе инÑеÑвалÑ, ÑледÑÑÑÐ¸Ñ ÐºÑивой ÑÑкоÑениÑ, вÑе из коÑоÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоенÑ.
ÐнимаÑии, ÑоÑÑавлÑÑÑие пеÑеÑ
од Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ ÑоÑÑоÑниÑми, ÑаÑÑо назÑваÑÑ Ð½ÐµÑвнÑми пеÑеÑ
одами, Ñак как пÑомежÑÑоÑнÑе ÑоÑÑоÑÐ½Ð¸Ñ Ð² пеÑиод Ð¼ÐµÐ¶Ð´Ñ Ð½Ð°ÑалÑнÑм и конеÑнÑм ÑоÑÑоÑнием неÑвно опÑеделÑÑÑÑÑ Ð±ÑаÑзеÑом.
CSS пеÑÐµÑ Ð¾Ð´Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð²Ð°Ð¼ ÑеÑиÑÑ ÐºÐ°ÐºÐ¸Ðµ ÑвойÑÑва нÑжно анимиÑоваÑÑ (пеÑеÑиÑлением Ð¸Ñ Ñвно), когда анимаÑÐ¸Ñ Ð½Ð°ÑнÑÑÑÑ (ÑÑÑановкой задеÑжки), как долго пеÑÐµÑ Ð¾Ð´ бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ (ÑÑÑановкой пÑодолжиÑелÑноÑÑи), а Ñакже как она бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑена (опÑеделением ÑÑнкÑии по вÑемени, напÑÐ¸Ð¼ÐµÑ Ð»Ð¸Ð½ÐµÐ¹Ð½Ð¾ или бÑÑÑÑо в наÑале, медленно в конÑе).
ÐÑимеÑание: CSS пеÑÐµÑ Ð¾Ð´Ñ Ð¼Ð¾Ð³ÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð±ÐµÐ· пÑеÑикÑов, однако ÑпеÑиÑикаÑÐ¸Ñ ÑолÑко недавно доÑÑигла ÑÑабилÑноÑÑи, пÑеÑикÑÑ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ Ð´Ð»Ñ Ð±ÑаÑзеÑов на WebKit. Ðни Ñакже Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑÑаÑÑÑ Ð²ÐµÑÑий бÑаÑзеÑов (ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº: Firefox 15, Opera 12 и более ÑÐ°Ð½Ð½Ð¸Ñ ). ТаблиÑа ÑовмеÑÑимоÑÑи пÑиведена Ð²Ð½Ð¸Ð·Ñ ÑÑÑаниÑÑ Ñ ÐµÑÑ Ð±Ð¾Ð»ÑÑим колиÑеÑÑвом инÑоÑмаÑии.
Ðакие CSS-ÑвойÑÑва анимиÑÑÑÑÑÑ?
РазÑабоÑÑик Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÑеделиÑÑ ÐºÐ°ÐºÐ¾Ðµ ÑвойÑÑво и как анимиÑоваÑÑ. ÐÑо позволÑÐµÑ ÑоздаваÑÑ ÑложнÑе пеÑÐµÑ Ð¾Ð´Ñ. Так как некоÑоÑÑе ÑвойÑÑва не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла анимиÑоваÑÑ, пеÑеÑÐµÐ½Ñ Ð´Ð¾ÑÑÑпнÑÑ Ð´Ð»Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑв огÑаниÑен опÑеделÑннÑм набоÑом.
ÐÑимеÑание: ÐеÑеÑÐµÐ½Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÑемÑÑ ÑвойÑÑв Ð¼Ð¾Ð¶ÐµÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð¿Ð¾ меÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑпеÑиÑикаÑии.
ÐÑимеÑание:
ÐнаÑение ÑвойÑÑва auto ÑвлÑеÑÑÑ ÑложнÑм ÑлÑÑаем. СпеÑиÑикаÑÐ¸Ñ Ð½Ðµ ÑекомендÑÐµÑ Ð°Ð½Ð¸Ð¼Ð¸ÑоваÑÑ Ð² знаÑение auto и из знаÑÐµÐ½Ð¸Ñ auto. ÐÑаÑзеÑÑ, оÑнованнÑе на Gecko, иÑполнÑÑÑ ÑÑо ÑÑебование в ÑоÑноÑÑи, а оÑнованнÑе на WebKit не Ñак ÑÑÑого. ÐÑполÑзование пеÑеÑ
одов Ñ auto ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ, Ñак как ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к непÑедÑказÑемÑм ÑезÑлÑÑаÑам, в завиÑимоÑÑи Ð¾Ñ Ð±ÑаÑзеÑа и его веÑÑии.
ÐÑимеÑание:
ÐеобÑ
одимо Ñакже ÑоблÑдаÑÑ Ð¾ÑÑоÑожноÑÑÑ Ð¿Ñи иÑполÑзовании пеÑеÑ
одов ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑлеменÑа в DOM Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ .appendChild() или ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ display: none; ÑвойÑÑва. ÐÑо вÑглÑдиÑ, как бÑдÑо никогда не пÑоиÑÑ
одило наÑалÑное ÑоÑÑоÑние, а ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ñегда бÑл в конеÑном ÑоÑÑоÑнии. СамÑй пÑоÑÑой ÑпоÑоб пÑеодолеÑÑ ÑÑо огÑаниÑение - пÑимениÑÑ window.setTimeout() c некоÑоÑÑм колиÑеÑÑвом миллиÑекÑнд до Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ CSS-ÑвойÑÑва, коÑоÑое Ð²Ñ ÑобиÑаеÑеÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑоваÑÑ.
ÐÑÐ¸Ð¼ÐµÑ Ð°Ð½Ð¸Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑвойÑÑв
HTML
<body>
<p>
Ð Ð±Ð»Ð¾ÐºÑ Ð½Ð¸Ð¶Ðµ пÑименÑÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии Ð´Ð»Ñ ÑвойÑÑв: width, height,
background-color, transform. ÐаведиÑе на него, ÑÑоб ÑвидеÑÑ, как они
анимиÑÑÑÑÑÑ
</p>
<div class="box"></div>
</body>
CSS
.box {
border-style: solid;
border-width: 1px;
display: block;
width: 100px;
height: 100px;
background-color: #0000ff;
-webkit-transition:
width 2s,
height 2s,
background-color 2s,
-webkit-transform 2s;
transition:
width 2s,
height 2s,
background-color 2s,
transform 2s;
}
.box:hover {
background-color: #ffcccc;
width: 200px;
height: 200px;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}
CSS-ÑвойÑÑва, опÑеделÑÑÑие пеÑÐµÑ Ð¾Ð´Ñ
CSS пеÑеÑ
Ð¾Ð´Ñ ÐºÐ¾Ð½ÑÑолиÑÑÑÑÑÑ ÑвойÑÑвом transition. ÐÑо лÑÑÑий ÑпоÑоб иÑ
наÑÑÑоиÑÑ, позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð´Ð»Ð¸Ð½Ð½ÑÑ
ÑвойÑÑв и иÑ
неÑооÑвеÑÑÑвий, коÑоÑÑе могÑÑ ÑделаÑÑ Ð¾ÑÐ»Ð°Ð´ÐºÑ CSS долгой.
Ðожно конÑÑолиÑоваÑÑ Ð¾Ð¿ÑеделÑннÑе паÑамеÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð° ÑледÑÑÑими подÑвойÑÑвами:
(ÐамеÑÑÑе, ÑÑо ÑÐ¸ÐºÐ»Ñ Ð¿ÐµÑеÑ
одов беÑконеÑÐ½Ñ ÑолÑко Ð´Ð»Ñ Ð½Ð°ÑиÑ
пÑимеÑов; CSS transitions ÑолÑко анимиÑÑÑÑ ÑÐ¼ÐµÐ½Ñ ÑвойÑÑва. ÐÑли вам нÑжно визÑализиÑоваÑÑ ÑÑÐ¾Ñ Ñикл, обÑаÑиÑе внимание на ÑвойÑÑво animation.)
transition-property- : УказÑÐ²Ð°ÐµÑ Ð¸Ð¼Ñ Ð¸Ð»Ð¸ имена ÑвойÑÑв, ÑÑи пеÑÐµÑ Ð¾Ð´Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑоваÑÑÑÑ. ТолÑко ÑвойÑÑва, ÑказаннÑе здеÑÑ, анимиÑÑÑÑÑÑ Ð² пеÑÐµÑ Ð¾Ð´Ð°Ñ ; изменение дÑÑÐ³Ð¸Ñ ÑвойÑÑв бÑÐ´ÐµÑ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸ÑÑ Ð¾Ð±ÑÑнÑм обÑазом.
transition-duration-
: ÐпÑеделÑÐµÑ Ð²ÑÐµÐ¼Ñ Ð¿ÑоиÑÑ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð°. Ðожно ÑказаÑÑ Ð²ÑÐµÐ¼Ñ Ð°Ð½Ð¸Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÑÐµÑ ÑвойÑÑв пеÑÐµÑ Ð¾Ð´Ð° ÑÑÐ°Ð·Ñ Ð¸Ð»Ð¸ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑвойÑÑва в оÑделÑноÑÑи.
transition-duration: 0.5stransition-duration: 1stransition-duration: 2stransition-duration: 4s
-
transition-timing-function- :
ÐпÑеделÑÐµÑ ÑÑнкÑиÑ, ÑказÑваÑÑÑÑ, как вÑÑиÑлÑÑÑÑÑ Ð¿ÑомежÑÑоÑнÑе знаÑÐµÐ½Ð¸Ñ ÑвойÑÑв. ÐÑ Ñакже можеÑе вÑбÑаÑÑ Ð¾ÑÐ»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ ÑÑнкÑии Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ð¨Ð¿Ð°Ñгалка.ÐолÑÑинÑÑво ÑÑнкÑий вÑемени Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿Ñеделено гÑаÑиком ÑооÑвеÑÑÑвÑÑÑей ÑÑнкÑии, обÑазÑÑÑей ÑеÑÑÑÑÐ¼Ñ ÑоÑками кÑивÑÑ ÐезÑе. Также можеÑе вÑбÑаÑÑ ÑÑнкÑÐ¸Ñ Ð¾ÑÑÑда Easing Functions Cheat Sheet.
transition-timing-function: easetransition-timing-function: lineartransition-timing-function: step-endtransition-timing-function: steps(4, end)- :
transition-delay-
: ÐпÑеделÑÐµÑ ÐºÐ°Ðº много должно пÑойÑи вÑемени, пеÑед Ñем как наÑнÑÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´.
transition-delay: 0.5stransition-delay: 1stransition-delay: 2stransition-delay: 4s
-
ÐоÑоÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÑинÑакÑиÑа:
div {
transition: <property> <duration> <timing-function> <delay>;
}
ÐпÑеделение завеÑÑÐµÐ½Ð¸Ñ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð°
ÐÑÑÑ ÑобÑÑие, ÑÑабаÑÑваÑÑее, когда пеÑеÑ
од завеÑÑÑн. Ðо вÑеÑ
бÑаÑзеÑаÑ
, ÑовмеÑÑимÑÑ
Ñо ÑÑандаÑÑами, еÑÑÑ ÑобÑÑие transitionend, в WebKit еÑÑÑ webkitTransitionEnd. СмоÑÑиÑе ÑаблиÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжки бÑаÑзеÑами Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии. У transitionend еÑÑÑ 2 ÑвойÑÑва:
propertyName-
СÑÑока, показÑваÑÑÐ°Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ какого ÑвойÑÑва завеÑÑено.
elapsedTime-
ЧиÑло Ñ ÑоÑкой, какое колиÑеÑÑво вÑемени пеÑÐµÑ Ð¾Ð´ вÑполнÑлÑÑ, до Ñого как запÑÑÑилоÑÑ ÑобÑÑие. ÐÑо знаÑение не Ñавно ÑвойÑÑвÑ
transition-delay.
Ðак обÑÑно, иÑполÑзÑйÑе меÑод element.addEventListener(), ÑÑÐ¾Ð±Ñ ÑледиÑÑ Ð·Ð° ÑÑим ÑобÑÑием:
el.addEventListener("transitionend", updateTransition, true);
ÐÑимеÑание:
СобÑÑие transitionend не пÑоизойдÑÑ, когда пеÑеÑ
од бÑл пÑеÑван до его завеÑÑениÑ, напÑимеÑ, еÑли ÑÑÑановили display: none или знаÑение анимиÑÑемого ÑвойÑÑва изменилоÑÑ.
Ðогда Ñ ÑпиÑков знаÑений ÑвойÑÑв ÑазнÑе длинÑ
ÐÑли лÑбой ÑпиÑок ÑвойÑÑв коÑоÑе, Ñем дÑÑгие, его знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ, ÑÑÐ¾Ð±Ñ ÑделаÑÑ ÐµÐ³Ð¾ Ð´Ð»Ð¸Ð½Ñ ÐºÐ°Ðº и Ñ Ð´ÑÑÐ³Ð¸Ñ . ÐапÑимеÑ:
div {
transition-property: opacity, left, top, height;
transition-duration: 3s, 5s;
}
ÐÑо ÑаÑÑмаÑÑиваеÑÑÑ, как еÑли Ð±Ñ ÑÑо бÑло:
div {
transition-property: opacity, left, top, height;
transition-duration: 3s, 5s, 3s, 5s;
}
ÐоÑ
ожим обÑазом, еÑли какой-Ñо ÑпиÑок ÑвойÑÑв длиннее, Ñем Ñ transition-property, он обÑезаеÑÑÑ:
div {
transition-property: opacity, left;
transition-duration: 3s, 5s, 2s, 1s;
}
ÐÑÐ´ÐµÑ Ð¸Ð½ÑеÑпÑеÑиÑовано как:
div {
transition-property: opacity, left;
transition-duration: 3s, 5s;
}
ÐÑоÑÑой пÑимеÑ
ÐÑÐ¸Ð¼ÐµÑ 4 ÑекÑÐ½Ð´Ñ Ð²ÑполнÑÐµÑ Ð¿Ð»Ð°Ð²Ð½Ð¾Ðµ изменение ÑÑиÑÑа за 2 ÑекÑндÑ, поÑле Ñого как полÑзоваÑÐµÐ»Ñ Ð½Ð°Ð²Ñл мÑÑÑ Ð½Ð° ÑлеменÑ:
#delay1 {
position: relative;
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
font-size: 14px;
}
#delay1:hover {
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
font-size: 36px;
}
ÐÑполÑзование пеÑÐµÑ Ð¾Ð´Ð¾Ð² Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ½Ñ
Ðни ÑаÑÑо иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐµÐ½Ð¸Ñ ÑлеменÑов в Ð¼ÐµÐ½Ñ Ð¿Ñи наведении мÑÑи. С помоÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð¾Ð² легко ÑделаÑÑ Ñакой ÑÑÑÐµÐºÑ Ð±Ð¾Ð»ÐµÐµ пÑивлекаÑелÑнÑм.
ÐеÑед Ñем, как Ð²Ñ Ð¿Ð¾ÑмоÑÑиÑе на код, возможно Ð·Ð°Ñ Ð¾ÑиÑе поÑмоÑÑеÑÑ Ð½Ð° живое демо (ÑÑиÑаем, ÑÑо Ð²Ð°Ñ Ð±ÑаÑÐ·ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ñ). Также Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑмоÑÑеÑÑ Ð½Ð° CSS, иÑполÑзÑемÑй ÑÑим пÑимеÑом.
СнаÑала зададим Ð¼ÐµÐ½Ñ Ð² HTML:
<div class="sidebar">
<p><a class="menuButton" href="home">Home</a></p>
<p><a class="menuButton" href="about">About</a></p>
<p><a class="menuButton" href="contact">Contact Us</a></p>
<p><a class="menuButton" href="links">Links</a></p>
</div>
ТепеÑÑ Ð½Ð°Ð¿Ð¸Ñем CSS Ð´Ð»Ñ Ð½Ð°Ñего менÑ:
.menuButton {
position: relative;
transition-property: background-color, color;
transition-duration: 1s;
transition-timing-function: ease-out;
text-align: left;
background-color: grey;
left: 5px;
top: 5px;
height: 26px;
color: white;
border-color: black;
font-family: sans-serif;
font-size: 20px;
text-decoration: none;
box-shadow: 2px 2px 1px black;
padding: 2px 4px;
border: solid 1px black;
}
.menuButton:hover {
position: relative;
transition-property: background-color, color;
transition-duration: 1s;
transition-timing-function: ease-out;
background-color: white;
color: black;
box-shadow: 2px 2px 1px black;
}
ÐÑÐ¾Ñ CSS ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ð½ÐµÑний вид менÑ, Ñ Ñоном и ÑвеÑом ÑекÑÑа, изменÑÑÑимиÑÑ Ð¿Ñи наведении (:hover).
ÐмеÑÑо опиÑÐ°Ð½Ð¸Ñ ÑÑÑекÑа можеÑе поÑмоÑÑеÑÑ Ð½Ð° живой пÑимеÑ, еÑли Ð²Ð°Ñ Ð±ÑаÑÐ·ÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ñ.
ÐÑполÑзование пеÑÐµÑ Ð¾Ð´Ð¾Ð², ÑÑÐ¾Ð±Ñ ÑделаÑÑ JavaScript ÑÑнкÑионалÑноÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾Ð¹
ÐеÑÐµÑ Ð¾Ð´Ñ - кÑÑÑÐ°Ñ Ð²ÐµÑÑ, ÑÑоб ÑделаÑÑ Ð²Ð¸Ð´ веÑей плавней, без надобноÑÑи ÑÑо-Ñо делаÑÑ Ð² ваÑей JS ÑÑнкÑионалÑноÑÑи. ÐаÑениÑе ÑледÑÑÑий пÑимеÑ:
<p>ÐликниÑе кÑда-нибÑдÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð²Ð¸Ð½ÑÑÑ ÑаÑ</p>
<div id="foo"></div>
ÐÑполÑзÑÑ JavaScript, добиваемÑÑ ÑÑÑекÑа пеÑемеÑÐµÐ½Ð¸Ñ ÑаÑа на опÑеделÑннÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ:
var f = document.getElementById("foo");
document.addEventListener(
"click",
function (ev) {
f.style.transform = "translateY(" + (ev.clientY - 25) + "px)";
f.style.transform += "translateX(" + (ev.clientX - 25) + "px)";
},
false,
);
C помоÑÑÑ CSS Ñглаживаем ÑÑÑÐµÐºÑ Ð±ÐµÐ· дополниÑелÑнÑÑ ÑÑилий. ÐÑоÑÑо добавлÑем пеÑÐµÑ Ð¾Ð´ и лÑбое изменение ÑвойÑÑв пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¿Ð»Ð°Ð²Ð½Ð¾:
p {
padding-left: 60px;
}
#foo {
border-radius: 50px;
width: 50px;
height: 50px;
background: #c00;
position: absolute;
top: 0;
left: 0;
transition: transform 1s;
}
ÐожеÑе поигÑаÑÑ Ñ ÑÑим здеÑÑ: https://jsfiddle.net/9h261pzo/291/
СпеÑиÑикаÑии
| Specification |
|---|
| CSS Transitions Module Level 1> |
СмоÑÑиÑе Ñакже
- Ðижнее Ð¼ÐµÐ½Ñ Ñ Ð¸ÑполÑзованием CSS пеÑÐµÑ Ð¾Ð´Ð¾Ð²
- ÐнÑеÑÑейÑ
TransitionEventи ÑобÑÑие . - ÐÑполÑзование CSS-анимаÑий