Web制作 スライダー

【slick】スライドの総数と現在のスライドが何番目か表示させる方法

slickのスライダーでスライドの数って表示出来ない?
スライドの総数と現在のスライドが何番目か表示させられるよ!

DEMO

最初に完成形を見てみましょう。

See the Pen
by junpei (@junpei-sugiyama)
on CodePen.


極力余計なコードは書かないようにしましたが、多少cssで整えています。

 

コード解説

それではコードを見てみましょう。

<div class="container">
  <div class="slider">
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
  </div>
</div> 

htmlはシンプルな物ですね。

こちらについてはスライド全体を囲ったdivのsliderというclass名がポイントとなります(class名は変更可能)

詳しくはこちらの記事を参照下さい。

レスポンシブ対応のスライダープラグイン「slick」の使い方

cssについては特に変わった所はないので省略します。

もし矢印のデザインを変えたかったり、ドットインジケーターを表示&デザインを変えたい場合は以下の記事を参照下さい。

slickの前へ次への矢印をカスタマイズする方法【画像変更も紹介】

slickのドットインジケーターをカスタマイズする方法

そして重要なのがjQueryとなります。

$(function () {
  $(".slider")
    .on("init", function (event, slick) {
      $(this).append('<div class="slick-num"><span class="now-count"></span> / <span class="all-count"></span></div>');
      $(".now-count").text(slick.currentSlide + 1); // 現在のスライド番号(+1が無いと0からスタートしてしまう)
      $(".all-count").text(slick.slideCount); // スライドの総数
    })
    .slick({
      // 通常のスライダー同様、オプションを記入
    })
    .on("beforeChange", function (event, slick, currentSlide, nextSlide) {
      $(".now-count").text(nextSlide + 1); // 現在のスライド番号の次のスライドになったら番号を+1
    });
}); 

html、cssそしてこのjQueryをコピペすれば使えますが、jQueryは何点か補足します。

まずclass名については以下になります。

  • slider → 画像を囲った要素のclass名
  • now-count → 現在何番目のスライドか(数字可変)
  • all-count → スライドの総数(数字固定)
  • slick-num → 上記2つを囲む要素

上記class名は変更しても構いません。

次に4行目ですが.appendの意味はこちらになります。

append()

指定した子要素の最後にテキストやHTMLを追加できるメソッド

<span class="now-count"></span>は現在表示されているスライドの番号が表示されます(数字は可変)

<span class="all-count"></span>はスライドの総数が表示されます(数字は固定)

<div class="slick-num"></div>は上記2つを囲ったdivになります。

これは特に必須ではありませんが、あった方がスタイルの調整がしやすいかと思います。

またこの2つの間にある「/」は区切り線となります。形が違う場合は擬似要素で表示させても良いかも知れません。

そして実際に表示されるhtmlは以下になります。

<div class="container">
  <div class="slider">
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
    <div class="slick-img">
      <img src="画像パス" alt=""/>
    </div>
   <div class="slick-num">
    <span class="now-count">1</span> / <span class="all-count">3</span>
   </div>
  </div> 
</div>

htmlに直接書く方法もありますが、今回はjQueryで書いています。

 

デモのスライダーはフェードで切り替えしていますが、もちろんスライドにも出来ますし矢印のデザインを変えたり、ドットインジケーターを表示させることも可能です。

以上になります。

-Web制作, スライダー
-