2020.10.16

JavaScript

swiper.jsのオプションbreakpointsで表示スライド数を切り替え

デモページはこちら

swiper.jsのオプションbreakpointsで表示スライド数を切り替えます。

htmlのコードは以下の通りです。クラス名swiper-wrapperはulタグ、クラス名swiper-slideはliタグに付与しています。画像はspanタグの背景画像です。ナビゲーションボタンはbuttonタグに独自のクラス名を付与して装飾します。また、ナビゲーションボタンはスライダーの両外側に配置するため、クラス名swiper-containerのdivタグの外側に記述しています。

<div class="container">
	<div class="swiper-container js-slider">
		<ul class="swiper-wrapper">
			<li class="swiper-slide">
				<a href="#" class="c-slider-item-link js-match-item">
					<figure class="c-slider-item-photo">
						<span class="c-photo-bg" style="background-image:url(images/swiper01.jpg)"></span>
					</figure>
					<h3 class="c-slider-list-ttl js-match-ttl">タイトル01<br>タイトル01</h3>
					<p class="c-slider-list-desc">ダミーテキストダミーテキストダミーテキスト</p>
				</a>
			</li>
			<li class="swiper-slide">
				<a href="#" class="c-slider-item-link js-match-item">
					<figure class="c-slider-item-photo">
						<span class="c-photo-bg" style="background-image:url(images/swiper02.jpg)"></span>
					</figure>
					<h3 class="c-slider-list-ttl js-match-ttl">タイトル02</h3>
					<p class="c-slider-list-desc">ダミーテキストダミーテキストダミーテキスト</p>
				</a>
			</li>
			<li class="swiper-slide">
				<a href="#" class="c-slider-item-link js-match-item">
					<figure class="c-slider-item-photo">
						<span class="c-photo-bg" style="background-image:url(images/swiper03.jpg)"></span>
					</figure>
					<h3 class="c-slider-list-ttl js-match-ttl">タイトル03</h3>
					<p class="c-slider-list-desc">ダミーテキストダミーテキストダミーテキスト</p>
				</a>
			</li>
		</ul>
	</div>
	<div class="c-slider-controler">
		<button class="c-slider-button-prev js-swiper-button-prev"></button>
		<button class="c-slider-button-next js-swiper-button-next"></button>
	</div>
</div>

CSSのコードです。主にレスポンシブのコンテンツ幅設定やナビゲーションボタンの装飾・位置調整です。ナビゲーションボタンはFont Awesomeを利用しています。

.container {
	position: relative;
	z-index: 5;
	width: 72.5vw;
	margin: 0 auto;
}
@media screen and (max-width: 1365px) {
	.container {
		width: 80vw;
	}
}
@media screen and (max-width: 767px) {
	.container {
		width: calc(100% - 64px);
	}
}
.c-slider-item-link {
	display: block;
	padding: 20px;
	border: 1px solid #ddd;
	transition: border-color .2s linear;
}
@media screen and (min-width: 1199px) {
	.c-slider-item-link:hover {
		border: 1px solid #3bbbff;
	}
}
.c-slider-item-photo {
	position: relative;
	overflow: hidden;
	margin-bottom: 20px;
	padding-bottom: 60%;
}
.c-photo-bg {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background-position: center;
	background-size: cover;
}
.c-slider-list-ttl {
	margin-bottom: 20px;
	font-size: 1.8rem;
	font-weight: 800;
	line-height: 1.5;
	color: #3bbbff;
}
.c-slider-list-desc {
	line-height: 1.6;
}
.c-slider-controler {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.c-slider-button-prev {
	position: absolute;
	top: 50%;
	left: -30px;
	transition: transform 0.5s cubic-bezier(0.075, 0.82, 0.165, 1);
	transform: translateX(-100%) translateY(-50%);
}
.c-slider-button-prev:after {
	font-family: "Font Awesome 5 Free";
	font-size: 3rem;
	font-weight: 900;
	color: #3bbbff;
	content: "\f053";
	transition: color 0.5s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.c-slider-button-next {
	position: absolute;
	top: 50%;
	right: -30px;
	transition: transform 0.5s cubic-bezier(0.075, 0.82, 0.165, 1);
	transform: translateX(100%) translateY(-50%);
}
.c-slider-button-next:after {
	font-family: "Font Awesome 5 Free";
	font-size: 3rem;
	font-weight: 900;
	color: #3bbbff;
	content: "\f054";
	transition: color 0.5s cubic-bezier(0.075, 0.82, 0.165, 1);
}
@media screen and (max-width: 767px) {
	.c-slider-button-prev {
		transform: translateX(25%) translateY(-50%);
	}
	.c-slider-button-next {
		transform: translateX(-25%) translateY(-50%);
	}
}
@media screen and (min-width: 1365px) {
	.c-slider-button-prev:hover {
		transform: translateX(-100%) translateY(-50%) scale(1.2);
	}
	.c-slider-button-next:hover {
		transform: translateX(100%) translateY(-50%) scale(1.2);
	}
	.c-slider-button-prev:hover:after, .c-slider-button-next:hover:after {
		color: #ffb500;
	}
}

JavaScriptのコードです。オプションでbreakpointsを指定します。ブラウザ幅が1361px以上の時はslidesPerView: 3、768px以上の時はslidesPerView: 2、767px以下の時はslidesPerView: 1を指定して、レスポンシブで表示スライド数を切り替えます。

var swiper01 = new Swiper('.js-slider', {
	loop: true,
	slidesPerView: 1,
	spaceBetween: 40,
	navigation: {
		nextEl: '.js-swiper-button-next',
		prevEl: '.js-swiper-button-prev'
	},
	autoplay: {
		delay: 5000,
	},
	breakpoints: {
		1361: {
			slidesPerView: 3,
		},
		768: {
			slidesPerView: 2,
		}
	}
});

関連記事

2020.10.18

JavaScript

swiper.jsで連動する2つのスライダーを実装

デモページはこちら swiper.jsで連動する2つのスライダーを実装します。メインのスライダーはナビゲーションボタンかスワイプでスライドさせ、それに連動して背…

2020.09.02

JavaScript

JavaScriptライブラリ layzr.jsの使い方

画像の遅延読み込みができるJavaScriptライブラリlayzr.jsの使い方です。ウィンドウ表示領域外の要素や画像は非表示もしくは代替画像にしておいて、スク…

2020.10.26

JavaScript

JavaScriptのsplitメソッドで要素を分割し配列に格納

デモページはこちら JavaScriptのsplitメソッドで要素を分割し配列に格納します。 以下のhtmlの構造でテストします。 splitメソッドは指定した…

2025.08.11

JavaScript

swiper自動再生をマウスオーバーで制御

デモページはこちら swiper.jsでスライドを自動再生させ、マウスオーバーで一時停止、マウスアウトで再開を切り替えます。htmlのコードは以下の通りです。 …

2020.10.18

JavaScript

swiper.jsでスライドを一定速度で無限ループ

デモページはこちら swiper.jsでスライドを一定速度で無限ループさせます。スライダー全体の横幅を決めて表示スライドを1つにし、はみ出したスライドをCSSで…

上に戻る