説明
右から左に重なるスライドショーを実現するには、あからじめスライドショーで使う画像を用意しておきます。ここでは5枚の画像を用意しました。この画像をbackground-imageとbackground-positionを使って横に並べて配置します。ポイントとしては最初と最後の画像は同じものにしておくということです。このようにすることで切れ目なくスライドさせる事ができます。
次にアニメーション部分はanimationプロパティに画像が移動する(切り替わる)時間を設定します。
アニメーションフレームのキーは0%の時は初期位置として最初の画像は0pxをその他の画像の位置を画像の横幅にします。後は一定間隔ごとにn番目の画像を0pxに設定していきます。注意点としてはbackground-imageで最後に指定した画像が一番奥に表示されるという事です。このため、最後に重なる画像を最初に定義しておく必要があります。
■HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS3例文辞典サンプル</title>
<link rel="stylesheet" href="css/main.css"">
<body>
<h1>CSS3でスライドショー</h1>
<div id="slide"></div>
</body>
</html>
■CSS
#slide {
width: 384px;
height:216px;
border:1px solid red;
background-color: gray;
background-repeat: no-repeat;
background-image: url(images/1.jpg), url(images/2.jpg), url(images/3.jpg), url(images/4.jpg), url(images/5.jpg), url(images/1.jpg);
background-position: 0px top, 384px top, 768px top, 1152px top, 1536px top, 1920px top;
animation : "side" 20s linear 0s infinite normal;
-webkit-animation : "side" 10s linear 0s infinite normal;
}
@keyframes "side" {
0% { background-position: 384px top, 384px top, 384px top, 384px top, 384px top, 0px top; }
15% { background-position: 384px top, 384px top, 384px top, 384px top, 384px top, 0px top; }
20% { background-position: 384px top, 384px top, 384px top, 384px top, 0px top, 0px top; }
35% { background-position: 384px top, 384px top, 384px top, 384px top, 0px top, 0px top; }
40% { background-position: 384px top, 384px top, 384px top, 0px top, 0px top, 0px top; }
55% { background-position: 384px top, 384px top, 384px top, 0px top, 0px top, 0px top; }
60% { background-position: 384px top, 384px top, 0px top, 0px top, 0px top, 0px top; }
75% { background-position: 384px top, 384px top, 0px top, 0px top, 0px top, 0px top; }
80% { background-position: 384px top, 0px top, 0px top, 0px top, 0px top, 0px top; }
95% { background-position: 384px top, 0px top, 0px top, 0px top, 0px top, 0px top; }
100% { background-position: 0px top, 0px top, 0px top, 0px top, 0px top; }
}
@-webkit-keyframes "side" {
0% { background-position: 384px top, 384px top, 384px top, 384px top, 384px top, 0px top; }
15% { background-position: 384px top, 384px top, 384px top, 384px top, 384px top, 0px top; }
20% { background-position: 384px top, 384px top, 384px top, 384px top, 0px top, 0px top; }
35% { background-position: 384px top, 384px top, 384px top, 384px top, 0px top, 0px top; }
40% { background-position: 384px top, 384px top, 384px top, 0px top, 0px top, 0px top; }
55% { background-position: 384px top, 384px top, 384px top, 0px top, 0px top, 0px top; }
60% { background-position: 384px top, 384px top, 0px top, 0px top, 0px top, 0px top; }
75% { background-position: 384px top, 384px top, 0px top, 0px top, 0px top, 0px top; }
80% { background-position: 384px top, 0px top, 0px top, 0px top, 0px top, 0px top; }
95% { background-position: 384px top, 0px top, 0px top, 0px top, 0px top, 0px top; }
100% { background-position: 0px top, 0px top, 0px top, 0px top, 0px top; }
}
目次に戻る