この手のは沢山出回っているので今更
っていう感じの話題ですけど、個人的
にはどのライブラリも利用しやすい
感じではなかったので簡単なコード
で出来るものを作ってみます。
最近、人気のスライダー系プラグイン、Nivo SliderがレスポンシブWebデザインに対応しました。
これ以外にもググればプラグインは沢山出てきますので、選択肢は沢山ありますが、短いコードで済むに越した事は無いので試しに書いてみます。
Sample
jQuery
$( 'img:gt(0)' ).hide(); setInterval( function () { $( 'img:first-child' ).fadeOut(0).next( 'img' ).fadeIn().end().appendTo( 'div' ); }, 4000); |
コードは特別な事はしていません。最初の画像以外非表示にしておいて、あとは順番に画像の表示、非表示を繰り返すだけのものです。エフェクト何も考えてないのでちょっとチカチカしますね。ごめんなさい。
CSS
div { position : relative ; width : 100% ; max-width : 450px ; padding : 0 ; margin : 0 auto ; } div img { position : relative ; top : 0 ; left : 0 ; width : 100% ; height : auto ; } |
CSSもMedia Queriesは使用しません。画像を包括するボックスのサイズをFluidレイアウトと同じ要領で%指定。Youtube等をレシポンシブWebデザインに対応させるのと同じ方法ですね。記事タイトルでは、jQueryでレスポンシブWebデザインに対応、みたいに思えてしまいますが、実際はCSSだけで対応します。
ただし、IE6はmax-widthが使えないのでこのままでは全画面表示になってしまいます。IE6でも表示を崩さないようにするにはハックが必要になりそうです。
HTML
< div > < img src = "foo.jpg" > < img src = "bar.jpg" > < img src = "hoge.jpg" > < img src = "huga.jpg" > </ div > |
HTMLもシンプルで済みます。
レスポンシブWebデザインにするという事は、スマートフォン等でも閲覧できる事を視野に入れている事が殆どですが、それならやはり表示スピードが気になります。それに、スマートフォン用のスライドショーにそんなに高機能な物は不要に感じます。Nivo SliderがレシポンシブWebデザインに対応しましたが、やはり重いですね。で、ふとコード量だけでも抑えたいな、と思って簡単なものから書いてみました。あとは必要に応じてコードを足していけば最小限に抑えられるんじゃないでしょうか。配布されているライブラリよりは軽量なコードで済ませられそうです。