時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【注意点あり】slickとLightbox2を一緒に使う方法【jQuery】

記事内に広告を含みます

パソ君
パソ君

・slickとLightbox2って一緒に使えるの?

こんな疑問にお答えします。

結論から言うと、slickとLightbox2を一緒に使うことは可能です。

実際に実務でも使用しました。

が、注意点があるんですよね。使用する前に知っておいたほうが良いでしょう。

ジト
ジト

注意点といっても、すぐ対策可能だよ!

ということで、この記事では「slickとLightbox2を一緒に使う方法」について解説していきます!

【jQuery】lightbox2の使い方【オプション・レスポンシブ対応解説】
この記事でわかること

・slickとLightbox2を一緒に使う方法
・slickとLightbox2を一緒に使う時の注意点

slickとLightbox2を一緒に使う方法【jQuery】

一緒に使った時の挙動はこんな感じ↓

slickの特徴も、Lightbox2の特徴も兼ね備えながら実装できてますよね。

コードがこちら↓

<!-- ここから上はheadタグ -->
<link rel="stylesheet" href="./assets/css/style.css">
<link rel="stylesheet" href="./assets/slick/slick.css">
<link rel="stylesheet" href="./assets/lightbox2/css/lightbox.min.css">
</head>
<body>

<div class="test-box js-slick">
    <div class="test-box__item">
        <a href="./assets/img/1.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/1.png" alt=""></a>
    </div>
    <div class="test-box__item">
        <a href="./assets/img/2.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/2.png" alt=""></a>
    </div>
    <div class="test-box__item">
        <a href="./assets/img/3.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/3.png" alt=""></a>
    </div>
    <div class="test-box__item">
        <a href="./assets/img/4.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/4.png" alt=""></a>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script src="./assets/slick/slick.min.js"></script>
<script src="./assets/lightbox2/js/lightbox.min.js"></script>
<script src="./assets/js/script.js"></script>

</body>
</html>
$(function() {
    $('.js-slick').slick({
        dots: true,
        dotsClass: 'dots_name',
        arrows: false,
        autoplay: true,
        autoplaySpeed : 33000,
    });
});

正直使い方の解説といっても、slickとLigntbox2の通常の使い方を合体しているだけなんですよね。

そのなかでも重要な点としては下記の通りです。

  1. slickを使う箱を用意
  2. その箱内の要素にLigntbox2のaタグを入れる

使い方➀:slickを使う箱を用意

まず通常のslickを使うように、スライダーさせる要素達を囲む箱を用意しましょう。

箱にslick用のクラスを付与。今回でいう「js-slick」ですね。

<div class="test-box js-slick">
    <!-- この中にスライダーさせる要素を入れる -->
</div>

で、「js-slick」に対してslickを使用します。

$(function() {
    $('.js-slick').slick();
});

これでスライダーさせることができました。

使い方②:その箱内の要素にLigntbox2のaタグを入れる

そして次にLigntbox2のaタグを入れていきます。

<div class="test-box__item">
    <!-- Ligntbox2用のaタグ -->
    <a href="./assets/img/1.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/1.png" alt=""></a>
</div>
<div class="test-box__item">
    <!-- Ligntbox2用のaタグ -->
    <a href="./assets/img/2.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/2.png" alt=""></a>
</div>
<div class="test-box__item">
    <!-- Ligntbox2用のaタグ -->
    <a href="./assets/img/3.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/3.png" alt=""></a>
</div>
<div class="test-box__item">
    <!-- Ligntbox2用のaタグ -->
    <a href="./assets/img/4.png" data-lightbox="test" class="test-box__lightbox2"><img src="./assets/img/4.png" alt=""></a>
</div>

左右に切り替えする場合は、data-lightbox属性の値をすべて同じにしておきます。

Ligntbox2の詳細はこちらの記事で↓

【jQuery】lightbox2の使い方【オプション・レスポンシブ対応解説】

これで無事、slick+Ligntbox2を一緒に使うことができました。

【注意点あり】slickとLightbox2を一緒に使う方法【jQuery】

slick+Ligntbox2を一緒に使うことは、先述のコードで可能です。

ただ注意点があります。

それがキャプションに表示される画像数が異なってしまうこと。

画像数が異なる??

先ほどのHTMLに記述してる通り、スライダー要素の個数は4個です。

つまり画像数は4個のはず。

でも下記画像の赤丸部分を見てください!

Ligntbox2のキャプション部分なんですが「合計9枚中の2枚目を表示している」という表示をしています。

なぜか画像数が増えて反映されています。。
特に問題はないんですが、見た目上同じ画像数にしたいかと。。

画像数が異なる理由

画像数が異なる理由としては、slickで前後にクローンを作成しているため。

良い感じに回転させて表示するために、クローンを作って回しているので画像数が増えてしまいます。

Ligntbox2ではこのクローンの画像も数えてしまうため、異なる数がキャプションに表示されてしまうわけです。。

対策は簡単です

といっても安心してください。対策はめちゃ簡単。

下記コードを使うだけ。

$(window).on('load', function () {
    $('.slick-cloned a').removeAttr('data-lightbox');
});

このコードは「クローンに対してdata-lightboxを削除する」という意味。

slickではクローンで作られた要素に対して「.slick-cloned」というクラスを付与しています。

つまりこのクラスがある子要素のaタグのdata-lightboxを削除すれば、元々の画像数をキャプションとして表示してくれるということ。

めっちゃ簡単に対策できますね!

実際にやってみた!

実際に先ほどのコードを記述して実装してみると、、、

直りました!!同じ数のキャプションが表示されています!

【注意点あり】slickとLightbox2を一緒に使う方法【jQuery】:まとめ

  • slickとLightbox2を一緒に使うことは可能
  • 使い方は通常通りで合体させるだけ。スライダー要素の中にaタグでdata-lightbox属性をいれる
  • 注意点はキャプションの表示画像数が異なること。理由はクローンまで数えるため。
  • 対策は「クローンに対してdata-lightboxを削除する」コードを記述。
ジト
ジト

slickとLightbox2を一緒に使う案件が来た時にそなえて、覚えておこう!

2 COMMENTS

ひよこ

助かりました!
画像数が異なる事象について、slickで画像のクローンが作成されてることまでは特定できたのですが、解決法がわからなかったので、大変助かりました。ありがとうございます!
こるからもがんばってください!

返信する

コメントを残す

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

CAPTCHA