レスポンシブ対応のカルーセル/スライダーを実装できるjQueryプラグイン「slick」

レスポンシブ対応のカルーセル/スライダーを実装できるjQueryプラグイン「slick」

レスポンシブ対応のカルーセル/スライダーを実装できるjQueryプラグイン「slick」

slickは、レスポンシブ対応のカルーセル/スライダーを実装することができるjQueryプラグインです。非常に豊富なオプションも用意されています。

今回は、このslickの実装手順を紹介したいと思います。そんなに難しくないので、ぜひチャレンジしてみてください。

ステップ1. ファイルのダウンロードと設置

slickの公式サイトにアクセスし、「get it now」からファイル一式をダウンロードします。GitHubからダウンロードしてもOKです。

get it now

zipファイルを解凍したら、以下のフォルダとファイルをサーバー上にアップロードします。

  • fontsフォルダ
  • slick.css
  • slick-theme.css
  • slick.min.js
  • ajax-loader.gif

fontsフォルダとslick-theme.css、ajax-loader.gifは同階層に設置してください。

ステップ2. HTMLのマークアップ

<head>~</head>内で、以下のようにアップしたcssファイルをロードします。

<link rel="stylesheet" href="css/slick.css">
<link rel="stylesheet" href="css/slick-theme.css">

続いて、</body>の直前で、以下のようにjQueryとslick本体をロードします。

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="js/slick.min.js"></script>

スライドを表示する部分は、以下のように画像をリストで記述します。

<ul class="slide">
  <li><img src="images/slide/slide1.png"></li>
  <li><img src="images/slide/slide2.png"></li>
  <li><img src="images/slide/slide3.png"></li>
  <li><img src="images/slide/slide4.png"></li>
  <li><img src="images/slide/slide5.png"></li>
</ul>

ステップ3. slickの実行

最後に、</body>の直前に以下を追加して、slickを実行します。

<script>
$(function(){
  $('.slide').slick({
    autoplay:true,
    autoplaySpeed:5000,
    arrows:true,
    dots:true,
    pauseOnHover:true
  });
});
</script>

「.slide」の部分は、画像を包括しているulに付与したクラスと合わせます。

スライダーの矢印を差し替える

ナビゲーションの矢印をオリジナル画像に差し替えるには、「appendArrows」オプションを指定します。

以下のように、スライドの下に矢印用の画像をマークアップしておきます。

<ul class="slide">
  <li><img src="images/slide/slide1.png"></li>
  <li><img src="images/slide/slide2.png"></li>
  <li><img src="images/slide/slide3.png"></li>
  <li><img src="images/slide/slide4.png"></li>
  <li><img src="images/slide/slide5.png"></li>
</ul>
 
<div id="slide-arrow">
  <div class="slick-next"><img src="images/slide-next.png" alt=""></div>
  <div class="slick-prev"><img src="images/slide-prev.png" alt=""></div>
</div>

appendArrowsオプションで、矢印画像を包括しているIDを指定すると、ナビゲーションの矢印を差し替えることができます。

<script>
$(function(){
  $('.slide').slick({
    autoplay:true,
    autoplaySpeed:5000,
    arrows:true,
    dots:true,
    pauseOnHover:true,
    appendArrows: $('#slide-arrow')
  });
});
</script>

もしくは、HTMLでは以下のように矢印の要素を記述せずに、slickのオプションで差し替える方法もあります。

<ul class="slide">
  <li><img src="images/slide/slide1.png"></li>
  <li><img src="images/slide/slide2.png"></li>
  <li><img src="images/slide/slide3.png"></li>
  <li><img src="images/slide/slide4.png"></li>
  <li><img src="images/slide/slide5.png"></li>
</ul>
 
<div id="slide-arrow"></div>

スクリプト側では以下のように指定します。

<script>
$(function(){
  $('.slide').slick({
    autoplay:true,
    autoplaySpeed:5000,
    arrows:true,
    dots:true,
    pauseOnHover:true,
    appendArrows: $('#slide-arrow'),
    prevArrow: '<div class="slide-prev"><img src="images/slide-prev.png" alt=""></div>',
    nextArrow: '<div class="slide-next"><img src="images/slide-next.png" alt=""></div>',
  });
});
</script>

appendArrowsで矢印の要素を置く場所(ID)を指定し、prevArrowとnextArrowで要素を記述すると、appendArrowsで指定した箇所に矢印(ここではslide-prev.pngとslide-next.png)が出力されます。

画像でなくてもアイコンフォントやテキストなど、色んな矢印と差し替えることができます。

サムネイル付きのスライダーを設置する

サムネイル付きのスライダーを設置するには、メインのスライドとサムネイル用のスライドを2つ作成します。

<ul class="slide thumb-item">
  <li><img src="images/slide/slide1.png"></li>
  <li><img src="images/slide/slide2.png"></li>
  <li><img src="images/slide/slide3.png"></li>
  <li><img src="images/slide/slide4.png"></li>
  <li><img src="images/slide/slide5.png"></li>
</ul>
 
<ul class="slide thumb-item-nav">
  <li><img src="images/slide/slide-nav1.png"></li>
  <li><img src="images/slide/slide-nav2.png"></li>
  <li><img src="images/slide/slide-nav3.png"></li>
  <li><img src="images/slide/slide-nav4.png"></li>
  <li><img src="images/slide/slide-nav5.png"></li>
</ul>

スクリプトは以下のように記述します。

<script>
$(function(){
  $('.thumb-item').slick({
    autoplay:true,
    infinite:true,
    autoplaySpeed:5000,
    speed:500,
    dots:false,
    pauseOnHover:false,
    arrows:false,
    fade:true,
    asNavFor: '.thumb-item-nav'
  });
 
  $('.thumb-item-nav').slick({
    accessibility: true,
    slidesToShow: 5,
    slidesToScroll: 1,
    asNavFor: '.thumb-item',
    focusOnSelect: true
  });
});
</script>

「asNavFor」でメインのスライドとサムネイルをそれぞれ指定して、スライドの切り替わりを連動させます。また、サムネイルの「focusOnSelect」をtrueにすると、表示中スライドのサムネイルに”slick-current”というクラスが追加されます。

上記を記述すれば、横並びのサムネイルが表示されますので、あとはCSSで見た目を調整しましょう。

前後のスライドを表示させる

表示されているスライドの前後のスライドを表示させるには、オプションに「centerMode: true」と「centerPadding: ‘〇%’」を追加します。

<script>
$(function(){
  $('.slide').slick({
    autoplay:true,
    autoplaySpeed:5000,
    dots:true,
    pauseOnHover:true,
    slidesToShow: 1,
    centerMode: true,
    centerPadding: '10%'
  });
});
</script>

centerPaddingの値を大きくすると、前後のスライドが見える部分も大きくなります。

アクティブなスライド以外(隠れている前後のスライド)にスタイルを適用するには、CSSセレクタで「.slick-slide:not(.slick-active)」を指定します。例えば、以下のように指定すれば、表示されているアクティブなスライド以外は半透明になります。

.slick-slide:not(.slick-active) {
  opacity: 0.7;
}

合わせてスライド間の余白も入れておくと良いですね。

.slider .slick-slide {
  margin: 0 30px;
}

スライド部分を横幅いっぱいにして、前後のスライドを表示させるデザインって結構ありますよね。slickを使えばこういったデザインも簡単に実現可能です。

また、中央のスライドのみにスタイルを適用したい場合は、「.slick-slide.slick-center」をセレクタに指定します。

.slick-slide.slick-center {
  background: #ff0000;
}

横に流れ続ける無限ループスライダーを実装する

横に無限に流れ続けるループスライダーにしたい場合は、スクリプトを以下のようにします。

<script>
$(function(){
  $('.slide').slick({
    autoplay: true,
    autoplaySpeed: 0,
    speed: 10000,
    cssEase: 'linear',
    arrows: false,
    swipe: false,
    pauseOnFocus: false,
    pauseOnHover: false,
    variableWidth: true
  });
});
</script>

「autoplaySpeed: 0」にすることでスライドが常に切り替わり、「cssEase: ‘linear’」を指定することで等速で流れ続けます。

オプション

代表的なオプションについては、以下の通りです。

autoplay 自動再生
autoplaySpeed 自動再生の間隔
arrows ナビゲーション(矢印)の表示
dots スライド数を示すドットの表示
fade フェードイン・フェードアウトの切り替え効果
infinite ループの有無
pauseOnHover マウスホバーで自動再生を一時停止
pauseOnDotsHover ドットにマウスホバーで自動再生を一時停止

オプションは他にも用意されていますので、詳しくは公式サイトをご参照ください。

あとがき

シンプルなカルーセル/スライダーも個性的なものも、どちらも実装可能なプラグインですね。

サイトに導入するカルーセル/スライダーのプラグインで迷ったら、slickもぜひ検討してみてください。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です