プラグインのスライダーの動きをカスタマイズする

プラグインのスライダーの動きをCSSで変更する機会がありましたので、やり方をメモしておきます。
今回使用するプラグインはslick.jsとswiper.jsですが、スライド時に要素にclassが付与されるプラグインであればだいたい大丈夫と思います。

サンプルコード

今回は以下のようにスライド画像が横に並ぶタイプのスライダーが対象になります。
slick.jsのカスタマイズ設定前のデモページ
swiper.jsのカスタマイズ設定前のデモページ

それぞれ以下のように設定しています。

slick.js

HTML

<div class="slick">
	<div class="slick-item"><img src="../img/img01.jpg"></div>
	<div class="slick-item"><img src="../img/img02.jpg"></div>
	<div class="slick-item"><img src="../img/img03.jpg"></div>
	<div class="slick-item"><img src="../img/img04.jpg"></div>
	<div class="slick-item"><img src="../img/img05.jpg"></div>
	<div class="slick-item"><img src="../img/img06.jpg"></div>
	<div class="slick-item"><img src="../img/img07.jpg"></div>
	<div class="slick-item"><img src="../img/img08.jpg"></div>
	<div class="slick-item"><img src="../img/img09.jpg"></div>
	<div class="slick-item"><img src="../img/img10.jpg"></div>
</div>

JavaScript

$(function() {
	$('.slick').slick({
		speed: 500,
		slidesToShow: 1,
		slidesToScroll: 1,
		centerMode: true,
		centerPadding: '0px',
		variableWidth: true
	});
});

swiper.js

HTML

<div class="swiper-container">
	<div class="swiper-wrapper">
		<div class="swiper-slide"><img src="../img/img01.jpg"></div>
		<div class="swiper-slide"><img src="../img/img02.jpg"></div>
		<div class="swiper-slide"><img src="../img/img03.jpg"></div>
		<div class="swiper-slide"><img src="../img/img04.jpg"></div>
		<div class="swiper-slide"><img src="../img/img05.jpg"></div>
		<div class="swiper-slide"><img src="../img/img06.jpg"></div>
		<div class="swiper-slide"><img src="../img/img07.jpg"></div>
		<div class="swiper-slide"><img src="../img/img08.jpg"></div>
		<div class="swiper-slide"><img src="../img/img09.jpg"></div>
		<div class="swiper-slide"><img src="../img/img10.jpg"></div>
	</div>
	<div class="swiper-button-prev"></div>
	<div class="swiper-button-next"></div>
</div>

JavaScript

$(function() {
	var mySwiper = new Swiper('.swiper-container', {
		loop: true,
		nextButton: '.swiper-button-next',
		prevButton: '.swiper-button-prev',
		spaceBetween: 30
	});
});

特に設定しない場合は通常のスライドになるので、少し動きを付けてみます。
左右にあるスライド画像を少し小さくしてみます。

slick.js

CSS

/* アニメーション設定 */
.slick-item {
	transform: scale(0.7);
	transition: transform 500ms;
}
.slick-center {
	transform: scale(1);
}

swiper.js

CSS

/* アニメーション設定 */
.swiper-slide {
	transform: scale(0.7);
	transition: transform 500ms;
}
.swiper-slide-active {
	transform: scale(1);
}

特に難しい設定をしているわけではなく、スライド要素にtransitionを設定して、中央に表示されているスライド要素とそれ以外のスライド要素で値を変えてアニメーションするようにしています。
slick.jsのデモページ
swiper.jsのデモページ

次はスライド要素に少し角度を付けてみます。

slick.js

CSS

/* アニメーション設定 */
.slick-item {
	transform: rotate(4deg);
	transition: transform 500ms;
}
.slick-center {
	transform: rotate(-4deg);
}

swiper.js

CSS

/* アニメーション設定 */
.swiper-slide {
	transform: rotate(4deg);
	transition: transform 500ms;
}
.swiper-slide-active {
	transform: rotate(-4deg);
}

slick.jsのデモページ
swiper.jsのデモページ

transitionのeasingを設定することで、少し変わった動きもつけることができます。
scaleの値を変更するサンプルのeasingを変更してみます。

slick.js

CSS

/* アニメーション設定 */
.slick-item {
	transform: scale(0.7);
	transition: transform 500ms  cubic-bezier(0.000, 1.650, 1.000, 1.650);
}
.slick-center {
	transform: scale(1);
}

swiper.js

CSS

/* アニメーション設定 */
.swiper-slide {
	transform: scale(0.7);
	transition: transform 500ms  cubic-bezier(0.000, 1.650, 1.000, 1.650);
}
.swiper-slide-active {
	transform: scale(1);
}

アニメション後の値を少し通過してから戻るアニメーションにできました。
slick.jsのデモページ
swiper.jsのデモページ
 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

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

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930