超簡単!CSSのみを使ったスライドショーアニメーション!
前回、
CSS3のpositionプロパティを使用したスライドショーアニメーションについて
解説を行いましたが、
今回は前回に比べてanimationを簡略化し、わかりやすくかつ出来栄えの良い
スライドショーの超簡単バージョンについてご紹介したいと思います。
まずはサンプルページをどうぞ!
まずこちらが前回ご紹介しましたpositionを使ったスライドショーです。
positionでのスライドショーのサンプルページ
解説につきましてはこちらもどうぞ!
positionを使ったCSSのみで実装するスライドショー。
今回は、positionではなくopacityをanimationで変化させたスライドショーとなっています。
サンプルページにつきましてはFirefox、Chrome、IE、MicrosoftEdgeで確認が取れています。
(safariでは挙動の確認は出来ておりません。近々インストールをしなければ。。)
前回のものと比べると、動きがスムーズでフェードイン・フェードアウトが自然にできています。
JQueryで実装したものと遜色はないような気がします。
なお、こちらにつきましても
stylesheetをエンヘッド方式で記述していますので、<ページのソースを表示>でCSSも確認できます。
HTML5の記述
それでは、HTML5部分の記述の解説です。
こちらは前回とほぼ同様となっております。
<body> <div id="wrapper"> <div id="main_content"> <h1>スライドショー・サンプル</h1> <header> <div class="zzz"> <img src="image/DSC_0300.JPG" class="aa image"> <img src="image/DSC_0394.JPG" class="bb image"> <img src="image/DSC_0810.JPG" class="cc image"> <img src="image/DSC_0815.JPG" class="dd image"> </div> </header> <nav> <ul> <li><a href="#aa">トピック</a></li> <li><a href="#aa">ニュース</a></li> <li><a href="#aa">イベント</a></li> <li><a href="#aa">ギャラリー</a></li> <li><a href="#aa">アクセス</a></li> </ul> </nav> <main> <h2>メインコンテンツ</h2> </main> <aside> <h2>サイドバー</h2> </aside> <footer> <small>フッター</small> </footer> </div> </div> </body>
今回も画像は4枚で実装していますがanimationの実行時間と遅延時間を延長すれば
4枚以上の画像でも可能です。
CSS3の記述
1枚目以外の画像にはopacity:0を
今回のスライドショーは、単純に各画像を重ねおり、画像に対してopacityで透明化を指定することにより
スライドショーを実装してあります。
animation:delayで遅延時間を設定していると、遅延時間中はanimationの効果が適用されません。
その為、1枚目以外の画像にはopacity:0を指定してあらかじめ透明化させておきます。
.aa /* 1枚目の画像 */ { animation-name:slide1; animation-duration:20s; animation-iteration-count:infinite; } .bb /* 2枚目の画像 */ { animation-name:slide1; animation-delay:5s; animation-duration:20s; animation-iteration-count:infinite; opacity: 0; } .cc /* 3枚目の画像 */ { animation-name:slide1; animation-delay:10s; animation-duration:20s; animation-iteration-count:infinite; opacity: 0; } .dd /* 4枚目の画像 */ { animation-name:slide1; animation-delay:15s; animation-duration:20s; animation-iteration-count:infinite; opacity: 0; }
あとは各画像に対して順番にopacityの変化を加えてあげるだけ
@keyframesでanimation名を指定します。
animetion内容も単純にopacityのみ。
めちゃくちゃ簡単です。
@keyframes slide1 { 0%{opacity: 0;} 6%{opacity: 1;} 25%{opacity: 1;} 40%{opacity: 0;} 100%{opacity: 0;} }
opacityを使ったスライドショーはこんなイメージです。
1枚目以外はopacity:0で透明化
4枚の画像が重なっており、1枚目以外の画像は透明になっている為1枚目の画像が見えている状態です。
opacityをanimationで変化させます。
次の瞬間には1枚目の画像が透明になり、2枚目の画像は透明化が解除されます。
3枚目・4枚目も同様に変化させます。
あとはanimation-iteration-countをinfiniteに指定で効果を延々と繰り返すことができます。
以上がopacityを使ったCSSのみのスライドショーです。
animationがかなり簡略化でき、動作もスムーズでかなり使いやすいものとなっていると自負しております。
今後も、CSSのanimation効果を追求していきたいと思います。
最後まで読んでくださいましてありがとうございました。
“超簡単!CSSのみを使ったスライドショーアニメーション!”への2件のフィードバック
凄く参考になりました!
教えてくださってありがとうございます(*^_^*)
ごまさん、
コメントありがとうございます!
そのように言っていただけると励みになります!
更新頻度は遅いですが、時々読みにきていただけたら嬉しいです!