わずか3分で作るCSS3オートスライダー
スマートフォンサイトにて、画像をループさせることになり、Javascriptだとやはりスマートフォンでは重かったり、jQuerymobileとでは愛称が悪かったりする問題で、CSS3にてオートスライダーを作ってみました。今回は画像をループさせていますが、テキストでもなんでもOKです。
Javascriptでやるよりも軽くて、簡単なのでスマートフォンサイトではオススメです。
CSS3オートスライダー作成手順
CSS3オートスライダーを作るにはたったこれだけです。
・画像を通常のfloatで横並びにする
・webkit-keyframesでどれくらい動かすのか
・定義したアニメーションを呼び出し、ループ回数、全体の秒数を記入
・webkit-keyframesでどれくらい動かすのか
・定義したアニメーションを呼び出し、ループ回数、全体の秒数を記入
CSS3オートスライダーサンプルコード
こちらにサンプルを記入しておきます。動作の仕組みを細かくコメントアウトで解説しました。
ソースコードコピペでどうぞ。
CSS
* {
margin: 0;
padding: 0;
border: none;
}
/*指定した幅、高さだけ表示*/
#mask {
width: 239px;
height: 320px;
overflow: hidden;/*指定した幅だけ見える*/
position: relative;
}
ul#photo {
top: 0;
left: 0;
width: 956px;/*アニメーションさせる画像の合計幅*/
height: 320px;/*写真縦*/
position: absolute;
}
/*写真を横一列に配置*/
ul#photo li {
width: 239px;
height: 320px;
float: left;
list-style: none;
}
/*アニメーション定義*/
@-webkit-keyframes Slide {
0% {left: 0;}/*0で始まり・・・*/
20% {left: 0;}
25% {left: -239px;}/*20秒の25%、つまり5秒進んだら-239pxずらす*/
45% {left: -239px;}
50% {left: -478px;}
70% {left: -478px;}
75% {left: -717px;}
95% {left: -717px;}
100% {left: 0;}/*20秒の100%、つまり20秒になったら0、初期の場所へ。*/
}
ul#photo {
-webkit-animation-name: Slide;/*定義したアニメーションの呼び出し*/
-webkit-animation-duration: 20s;/*アニメーションは『合計』で何秒か*/
-webkit-animation-iteration-count:infinite;/*『infinite』無制限に繰り替えす*/
}
html
<div> <div id="mask"> <ul id="photo"> <li id="slide01"><img src="img/musuko1.jpg" width="239" height="320" alt=""></li> <li id="slide02"><img src="img/musuko2.jpg" width="239" height="320" alt=""></li> <li id="slide03"><img src="img/musuko3.jpg" width="239" height="320" alt=""></li> <li id="slide04"><img src="img/musuko4.jpg" width="239" height="320" alt=""></li> </ul> </div> </div>
DEMO画像はアホ息子がひたすらアイス食べている画像です。
