Live study #3

cssだけでスライドショー

概要 cssだけで作るスライドショーを題材に、css3の animationとtransitionを学習。

凡例

お手本にするサンプル

Pure CSS3 Cycle Slider」をお手本にします。とても美しい動作です。まずは動作を確認して下さい。

マークアップをキチンと考える

最終的にCSSで動作させるのか、jQueryで動作させるのかに関わらず、まずはきちんとマークアップします。そうすると以下の利点があります。

ここでは『画像とその名前を含むリンクを箇条書きにする』と考えて ul > li > a > h2,img としてみました。div.progress-barは画像の下に表示させる「スライドの表示秒数を伝える工夫」の為の部品です。

html

スライドさせる準備

同じhtmlに対して以下の目的でCSSを施します。

css
.slide ul{
  	list-style:none;
}
.slide ul li{
  float:left;
  width:100px;
  height:50px;
  position:relative;
  overflow:hidden;
}
.slide ul li h2{
  position:absolute;
  padding:0.5em 1em;
  background:rgba(0,0,0,0.5);
  color:#fff;
  top:0;
  left:-110px;
}
.slide ul li:hover h2 {
  left:0px;
}

h2の出現時に動きをつける

hover時の演出にCSS3のtransitionを加えてみます。上記のSAMPLE 2との違いを、マウスオーバーして比べて下さい。

css
.slide.transit ul li h2{
	/*
	transitionの秒数を0.5秒に指定。その他の指定はdefaultに任せました。
	-moz-はFirefox用のベンダープレフィックスで、
	-webkit-がSafariとChrome用のベンダープレフィックスです。
	*/
	-moz-transition:0.5s;
	-webkit-transition:0.5s;
	transition:0.5s;
	/*フワッと表示される様に不透明度も設定*/
	opacity:0;
}
.slide.transit ul li:hover h2 {
	/*不透明度が0%から100%になるように*/
	opacity:1;
}

要素Aにtransionプロパティをつけると、要素Aが要素A’に変化する「途中」をアニメーションの様に表示できます。Adobe Flashを使ったことがある人は、タイムラインのキーフレームを設定する、と考えるとイメージし易いかもしれません。

要素にマウスオーバーするとhover疑似クラスが付いて、AからA’に変化しますから、これを利用するのが最も使えるパターンです。

他にもtarget、active、select疑似クラスも使えます。また、jQueryでclassを操作しても良いでしょう。下のasideはhover疑似クラスで読める様にしてみました。

次回の予告

次回はいよいよスライドショーを実装します。予習したい人はお手本と、以下の手順を参考にチャレンジして下さい。

  1. ulをdiv.maskで囲み、横並びの<li>の内、1つだけを表示させて他を隠すCSSを施す
  2. 各<li>にCSS3のanimatinを設定する
  3. 各<li>にhoverしたらanimationを一時停止させるanimation-play-stateを追加する
  4. div.progress-barにもanimatinを設定する

続きを作成しました。予習したい人はどうぞ。→ cssだけでスライドショー(その2)