フロントの人の雑多メモ

【slick】サムネイル付きスライダーを複数設定する方法

【slick】サムネイル付きスライダーを複数設定する方法

jQueryのスライダープラグイン「slick.js」のサムネイル付きスライダーを同一ページに複数設置するサンプルコードをご紹介。

サンプル

HTML

スライダーと、サムネイル用のスライダーを作るときに、data-slick属性を付与して、スライダーとサムネイルとで同じ値になるようにします。

<!-- スライダー 1つ目 -->
<div class="slider" data-slick="01">
	<div class="slide"><img src="img/img01.jpg"></div>
	<div class="slide"><img src="img/img02.jpg"></div>
	<div class="slide"><img src="img/img03.jpg"></div>
	<div class="slide"><img src="img/img04.jpg"></div>
</div>
<!-- サムネイル -->
<div class="slider-nav" data-slick="01">
	<div class="slide"><img src="img/img01.jpg"></div>
	<div class="slide"><img src="img/img02.jpg"></div>
	<div class="slide"><img src="img/img03.jpg"></div>
	<div class="slide"><img src="img/img04.jpg"></div>
</div>

<!-- スライダー 2つ目 -->
<div class="slider" data-slick="02">
	<div class="slide"><img src="img/img01.jpg"></div>
	<div class="slide"><img src="img/img02.jpg"></div>
	<div class="slide"><img src="img/img03.jpg"></div>
	<div class="slide"><img src="img/img04.jpg"></div>
</div>
<!-- サムネイル -->
<div class="slider-nav" data-slick="02">
	<div class="slide"><img src="img/img01.jpg"></div>
	<div class="slide"><img src="img/img02.jpg"></div>
	<div class="slide"><img src="img/img03.jpg"></div>
	<div class="slide"><img src="img/img04.jpg"></div>
</div>

JS

.each()を使って、それぞれのスライダーとサムネイルを動作させます。

$('.slider').each(function(){
	//data-slickの値を取得
	let attr = $(this).attr('data-slick');

	$(this).slick({
		autoplay: true,
		slidesToShow: 1,
		slidesToScroll: 1,
		arrows: false,
		asNavFor: '.slider-nav[data-slick="'+attr+'"]',
	});

	$('.slider-nav[data-slick="'+attr+'"]').slick({
		slidesToShow: 3,
		slidesToScroll: 1,
		asNavFor: '.slider[data-slick="'+attr+'"]',
		dots: true,
		centerMode: true,
		focusOnSelect: true
	});
});

以上。

(おまけ) data-slick も自動的に付与する

data-slickを手動で付与するのが面倒な場合

こういうHTMLだとしたら

<!-- スライダー 1つ目 -->
<div class="slider_wrap">
	<div class="slider">
		<div class="slide"><img src="img/img01.jpg"></div>
		<div class="slide"><img src="img/img02.jpg"></div>
	</div>
	<div class="slider-nav">
		<div class="slide"><img src="img/img01.jpg"></div>
		<div class="slide"><img src="img/img02.jpg"></div>
	</div>
</div>

<!-- スライダー 2つ目 -->
<div class="slider_wrap">
	<div class="slider">
		<div class="slide"><img src="img/img01.jpg"></div>
		<div class="slide"><img src="img/img02.jpg"></div>
	</div>
	<div class="slider-nav">
		<div class="slide"><img src="img/img01.jpg"></div>
		<div class="slide"><img src="img/img02.jpg"></div>
	</div>
</div>

こうしてから、slick()します。

$(".slider_wrap").each(function(i){
	$(this).find(".slider").attr("data-slick", i);
	$(this).find(".slider-nav").attr("data-slick", i);
});

$('.slider').each(function(){
・・・(略)

コメント

「できました!」などの報告もお待ちしております。

内容を確認の上、個人情報などは省いて掲載させていただきます。

お名前・メールアドレスも入力する

メールで返信がほしい場合に入力してください。

頂いた個人情報は開示しません。返信のためだけに利用いたします。

直接送信されます。確認の上、「送信」してください。

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る


または以下のボタンからなにか買って応援
(リンク先の商品を買わなくても大丈夫です。)

Amazon

楽天市場

Yahoo!ショッピング

PR

Amazonのアソシエイトとして「けん」は適格販売により収入を得ています。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア