slickでスライドショー(バリエーションその2)
遅延読み込みオプション
jQueryのスライダープラグインslick
で画像スライダーを作るの続き。今度は画像を遅延読み込みするオプション。
DEMO画像の枚数を9枚にして、3枚表示で1枚ずつスライドにしてある。
HTMLのimgタグで、src属性ではなく、data-lazy="画像ファイルのパス"と書くところがミソらしい。
この設定さえしてあれば、実はjs側のオプションにlazyLoad
が無くてもOKだがサンプルでは明記してある。
cssは前回と同じで、htmlは画像を9枚に減らした。bodyタグ内、imgタグ周辺の変更箇所のみ載せる。
[sample07.html]
<body> <div id="main"> <ul class="slick-slider"> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/001.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/002.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/003.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/004.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/005.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/006.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/007.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/008.jpg"></a></li> <li class="slick-item"><a href="#"><img class="sample-img" data-lazy="./images/009.jpg"></a></li> </ul> </div> </body>
[sample07.js]
$(function() { $('.slick-slider').slick({ dots: true, infinite: true, slidesToShow: 3, slidesToScroll: 1, speed: 800, lazyLoad: 'ondemand' }); });
speedオプションを800にして少し遅目にスライドするようにした(defaultは300)。
クリックすると次の画像が少しフワッと出てくる。ただ、ブラウザのキャッシュのせいなのか、何度もスライドさせていくと効果が薄くなる。
lazyLoad
オプションのセット値は、 'ondemand' または 'progressive'。default値は'ondemand'。
可変幅サイズオプション
variableWidthオプションで、幅の違う画像のスライドができる。
ここでは前のサンプルの9枚の画像を、高さを揃えて幅を変えたものに加工した。
このvariableWidthオプションを指定せずにスライドを作るとこんな変なものになる。
[sample08.js]
$(function() { $('.slick-slider').slick({ dots: true, infinite: true, slidesToShow: 3, slidesToScroll: 1, speed: 500, centerMode: true, variableWidth: true }); });
centerMode で、アクティブな画像を中心に表示。 variableWidth で、幅の違う画像の高さを揃えて表示する。
高さの可変サイズオプション
adaptiveHeightオプションを true に指定すると、高さの違う画像のスライダーが作れる。
[sample09.js]
$(function() { $('.slick-slider').slick({ dots: true, infinite: true, slidesToShow: 1, speed: 500, adaptiveHeight: true }); });