CSSのアニメーションを利用して、画像を左右に行き来させています。
画像を変えればいろんなものに応用ができます。
一部jQueryを使ってますが、ほぼCSSのアニメで表現しています。
電車を左右に行き来させるパターン
もっと電車ぽく上下のアニメーションをつけるとこうなります。
ポップさが増しますね。
CSSは以下の3つになります。
.demo_item{ width: 50px; height: 50px; border-radius: 10px; background-image: url(/img/demo/car/101.png); background-size: 100% 100%; background-position: 0 0; background-repeat: no-repeat; display: block; position: relative; } .demo_item.anime{ animation-name: upDown; animation-iteration-count: infinite; animation-duration: 0.1s; animation-direction: alternate; animation-timing-function: steps(2); transition-duration: .3s; transition-property: transform; } .demo_stage{ position: relative; width: 100%; height: 65px; top: 0px; display: block; border-bottom: solid #777 1px; } .demo_wrap{ display: block; position: absolute; top: 20px; animation-fill-mode: forwards; animation-timing-function: linear; animation-duration: 15s; animation-iteration-count: 1; margin-right: -25px; }
ここまでは画像の指定やアニメの設定です。
次はdata-orderという自前の属性がついたらアニメの指定を変える記述です。
.demo_wrap[data-order="left"] { animation-name: GoLeft; } .demo_wrap[data-order="right"] { animation-name: GoRight; } [data-order="right"] > .demo_item { transform: rotateY(180deg); }
最後に行って、帰って、縦揺れのアニメの動きです。
@keyframes GoLeft { 0% { right: 10%; } 100% { right: 90%; } } @keyframes GoRight { 0% { right: 90%; } 100% { right: 10%; } } @keyframes upDown { 0% { top: 0; } 100% { top: 3px; } }
以下のHTMLで上記の縦揺れのサンプルが動きます。
<div class="demo_stage"> <div class="demo_wrap" data-order="left"> <span class="demo_item anime"></span> </div> </div>
class="demo_item anime"のanimeクラスに縦揺れのアニメが設定されてます。