slickのダウンロードと準備
ダウンロードはGitHubから。
ここでは現時点の最新バージョンである、slick 1.6を使用します。
kenwheeler/slick
ダウンロードしたファイルの「slick.css」「slick-theme.css」「slick.min.js」を読み込みます。
slickではその他、アイコンフォントと「ajax-loader.gif」を画像としてCSSから読み込まれています。
html
<link rel="stylesheet" type="text/css" href="slick.css"/> <link rel="stylesheet" type="text/css" href="slick-theme.css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script type="text/javascript" src="slick.min.js"></script>
簡単な使い方
HTMLの方はimgをリストで並べるだけです。
HTML
<ul id="slider"> <li><img src="img/01.jpg"></li> <li><img src="img/02.jpg"></li> <li><img src="img/03.jpg"></li> <li><img src="img/04.jpg"></li> </ul>
jQueryの指定はHTMLで指定したidに対してslickを実行するだけです。
JavaScript
<script type="text/javascript"> ;(function($) { $(function() { $('#slider').slick(); }); })(jQuery); </script>
場合によってはCSSを追記します。
幅を指定してセンター配置する場合はこのようになります。
#slider { width: 800px; margin: 30px auto; } #slider img { width: 100%; }
画面いっぱいに表示してレスポンシブ対応したスライダー
次は簡単なオプションを設定して、画像を画面いっぱいに表示してみましょう。
JavaScript
$('#slider').slick({ autoplay: true, // 自動で切り替える autoplaySpeed: 2000, // 待機する時間 arrows: false, // 次へ・戻るボタンを非表示 dots: true // 点のペジャーナビゲーション });
CSSで幅を100%に変更します。
#slider { width: 100%; margin: 0 auto; } #slider img { width: 100%; }
少しだけ前後の画像を表示させる
オプションでcenterModeを有効にするだけで前後の画像を少しだけ表示したりできます。
JavaScript
$('#slider').slick({ autoplay: true, autoplaySpeed: 2000, arrows: false, dots: true, centerMode: true, slidesToShow: 1, centerPadding: '200px' });
ページナビゲーションをサムネイルにする
ドット表示だったページナビゲーションをサムネイルに変えてみます。
HTMLにナビゲーション部分のリストを追記しましょう。
<ul id="slider-nav"> <li><img src="img/s01.jpg"></li> <li><img src="img/s02.jpg"></li> <li><img src="img/s03.jpg"></li> <li><img src="img/s04.jpg"></li> </ul>
JSのオプションでは本体の方に「asNavFor」でナビゲーションを、ナビゲーションの方は「asNavFor」で本体を指定します。
JavaScript
$('#slider').slick({ autoplay: true, autoplaySpeed: 2000, arrows: false, asNavFor: '#slider-nav' }); $('#slider-nav').slick({ asNavFor: '#slider', slidesToShow: 4, focusOnSelect: true });
ページナビゲーションにマウスオーバーで切り替える
デフォルトではナビゲーションをクリックすると切り替わるようになっています。
これをマウスオーバーで切り替え、クリックではリンクを設定して画面遷移という動作にしみます。
ナビゲーションにaタグを追記します。
<ul id="slider-nav"> <li><a href="index.html"><img src="../img/01.jpg"></a></li> <li><a href="index.html"><img src="../img/02.jpg"></a></li> <li><a href="index.html"><img src="../img/03.jpg"></a></li> <li><a href="index.html"><img src="../img/04.jpg"></a></li> </ul>
JSではマウスオーバーした時に制御するコードを追記します。
JavaScript
$('#slider-nav li').on('mouseover', function(e) { var $currTarget = $(e.currentTarget), index = $currTarget.data('slick-index'), slickObj = $('#slider').slick('getSlick'); slickObj.slickGoTo(index, true); // アニメーション中でも切り替える $slide.slick('slickPause'); // 自動切り替え停止 }) .on('mouseout', function(e) { $slide.slick('slickPlay'); // 自動切り替え再開 });
javascript – Slick Slider binding hover event – Stack Overflow