2020.10.18

JavaScript

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

デモページはこちら

swiper.jsでスライドを一定速度で無限ループさせます。スライダー全体の横幅を決めて表示スライドを1つにし、はみ出したスライドをCSSで表示させる実装になります。htmlのコードは以下の通りです。

<div class="container">
	<div class="swiper-container c-slider-container js-slider">
		<ul class="swiper-wrapper c-slider">
			<li class="swiper-slide c-slider-item">
				<figure class="c-slider-item-photo">
					<span class="c-photo-bg" style="background-image:url(images/swiper01.jpg)"></span>
				</figure>
			</li>
			<li class="swiper-slide c-slider-item">
				<figure class="c-slider-item-photo">
					<span class="c-photo-bg" style="background-image:url(images/swiper02.jpg)"></span>
				</figure>
			</li>
			<li class="swiper-slide c-slider-item">
				<figure class="c-slider-item-photo">
					<span class="c-photo-bg" style="background-image:url(images/swiper03.jpg)"></span>
				</figure>
			</li>
		</ul>
	</div>
</div>

CSSのコードです。スライダー全体を囲ったクラス名containerのdivタグにoverflow: hidden;を指定します。この指定がないとブラウザに横スクロールバーが表示されてしまいます。クラス名swiper-containerのdivタグにはwidth: 240px;を指定して、スライダー全体の横幅を固定します。また、クラス名swiper-containerのdivタグはswiper.cssでoverflow: hidden;が指定されていますが、これをoverflow: visible;に書き換えます。これでスライダー全体の横幅240pxの指定からはみ出したスライドが、全て画面上に表示されるようになります。クラス名swiper-wrapperのulタグにはtransition-timing-function: linear;を指定して、一定の速度で流れるスライダーにします。

.container {
	overflow: hidden;
}
.c-slider-container {
	width: 240px;
	margin: 0 auto;
	overflow: visible;
}
.c-slider {
	transition-timing-function: linear;
}
.c-slider-item-photo {
	position: relative;
	overflow: hidden;
	padding-bottom: 60%;
}
.c-photo-bg {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background-position: center;
	background-size: cover;
}

JavaScriptのコードです。slidesPerView: 1を指定して、スライダー全体の横幅240pxに対する表示スライド数を1つにします。この場合ソース上のスライドは、全てのスライド数プラス前後のスライド1つづつになるため、画面幅によってはループ時にスライドが切れてしまいます。そこでloopAdditionalSlides: 4を指定してループ時に作成されるクローン数を増やします。loopAdditionalSlidesの初期値は0です。また、speed: 5000を指定してスライドの切り替わるスピードをゆっくりに、autoplay: {delay: 0}を指定して自動再生のスライドの表示時間を0にします。

var swiper01 = new Swiper('.js-slider', {
	loop: true,
	slidesPerView: 1,
	loopAdditionalSlides: 4,
	centeredSlides: true,
	allowTouchMove: false,
	speed: 5000,
	autoplay: {
		delay: 0,
	}
});

関連記事

2020.10.26

JavaScript

JavaScriptのpushメソッドで配列に要素を追加・joinメソッドで配列の要素を連結

デモページはこちら JavaScriptのpushメソッドで配列に要素を追加し、joinメソッドで配列の要素を連結して文字列を生成します。 以下のhtmlの構造…

2020.09.04

JavaScript

JavaScriptライブラリ Web Font Loader(webfont.js)の使い方

デモページはこちら Webフォントの読み込みにWeb Font Loader(webfont.js)を利用します。Web Font LoaderはGoogleと…

2021.01.02

JavaScript

imagesLoadedを利用した画像のローディング

デモページはこちら 画像読み込みの管理ができるJavaScriptライブラリ、imagesLoadedを利用して画像の透過度が変化して見えるローディングを実装し…

2020.09.07

JavaScript

JavaScriptライブラリ imagesLoaded(imagesloaded.pkgd.js)の使い方

デモページはこちら 画像読み込みの管理ができるJavaScriptライブラリ、imagesLoaded(imagesloaded.pkgd.js)の使い方です。…

2020.10.17

JavaScript

swiper.jsのオプションslidesPerViewにautoを指定して独自で横幅設定

デモページはこちら swiper.jsのオプションslidesPerViewにautoを指定して、独自で横幅を設定します。htmlのコードは以下の通りです。ナビ…

上に戻る