フロントの人の雑多メモ

【bxSlider】一時停止ボタンの追加や、ホバー中は一時停止する方法

【bxSlider】一時停止ボタンの追加や、ホバー中は一時停止する方法

jQueryのスライダープラグイン「bxSlider」で一時停止・再生ボタンを追加したり、スライダーをホバー中は一時停止する方法をご紹介。

目次

標準機能による一時停止・再生

まずはbxSlider標準機能による、一時停止・再生ボタンの追加方法。

オプションを追加するだけで、右下に一時停止・再生ボタンを追加できます。

オプション「autoControls」をtrueにするだけ。

$("#bxslider").bxSlider({
	auto: true,
	autoControls: true, //一時停止・再生ボタン追加
});

ただこれだと、HTMLを自由にカスタマイズできないので、見た目にこだわりたい方は次の方法をご覧ください。

自分で一時停止・再生ボタンを追加する方法

自分でカスタマイズしたボタンを追加する方法。 一時停止・再生ボタンをクリックしてみてください。

HTMLはこんな感じ。 スライダーと、一時停止・再生ボタンを用意します。

<div id="bxslider">
	<div class="slide"><img src="img01.jpg"></div>
	<div class="slide"><img src="img02.jpg"></div>
	<div class="slide"><img src="img03.jpg"></div>
	<div class="slide"><img src="img04.jpg"></div>
</div>

<button id="bxslider_pause">一時停止</button>
<button id="bxslider_start">再生</button>

一時停止・再生ボタンは <button> タグじゃなくても大丈夫です。

で、肝心のJSはこんな感じ。

const slider = $("#bxslider").bxSlider({
	//オプションはお好みで
	auto: true
});

//一時停止
$("#bxslider_pause").on("click", function(){
	slider.stopAuto();
});

//再生
$("#bxslider_start").on("click", function(){
	slider.startAuto();
});

bxSliderを変数 slider にセットしておき
一時停止をクリックしたら slider.stopAuto(); で一時停止
再生をクリックしたら slider.startAuto(); で再生できます。

1つのボタンで一時停止・再生を切り替える

こんなボタンの追加方法。

HTMLはスライダーと、ボタンを1つ用意します。

<div id="bxslider">
	<div class="slide"><img src="img01.jpg"></div>
	<div class="slide"><img src="img02.jpg"></div>
	<div class="slide"><img src="img03.jpg"></div>
	<div class="slide"><img src="img04.jpg"></div>
</div>

<button id="bxslider_pause">一時停止・再生</button>

JSで、ボタンに .paused クラスを取ったり付けたりして一時停止・再生を切り替えます。

const slider = $("#bxslider").bxSlider({
	auto: true,
	pause: 1500
});

//ボタンをクリックしたとき
$("#bxslider_pause").on("click", function(){
	if($(this).hasClass("paused")){
		//一時停止中のとき
		//再開
		slider.startAuto();
		//.paused削除
		$(this).removeClass("paused");
	}else{
		//再生中のとき
		//一時停止
		slider.stopAuto();
		//paused付与
		$(this).addClass("paused");
	}
});

ホバー中は一時停止する方法

スライダーをマウスホバーしている間は一時停止する方法。

他のスライダープラグインの「slick」とかだとデフォルトでそうですね。

ホバー中は一時停止するはずです。

HTML。 bxsliderをさらにdivで囲います。

<div class="bx_wrap">
	<div id="bxslider">
		<div class="slide"><img src="img01.jpg"></div>
		<div class="slide"><img src="img02.jpg"></div>
		<div class="slide"><img src="img03.jpg"></div>
		<div class="slide"><img src="img04.jpg"></div>
	</div>
</div>

JSで、マウスポインタが .bx_wrap に乗ったら一時停止。 出たら再生します。

const slider = $("#bxslider").bxSlider({
	auto: true
});

$('.bx_wrap').mouseover(function(e) {
	//一時停止
	slider.stopAuto();
}).mouseout(function(e) {
	//再開
	slider.startAuto();
});

コメント

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

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

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

シェア

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