webデザイン・コーディングに役立つ情報、WordPressカスタムに使えるHTML・CSSコピペ用コード、Canva無料テンプレートなどをご紹介します♩

chiweblogちいウェブログ

CSSだけで作るスライドショー(フェード)

CSSだけで作るフェードスライドショー
この記事を書いている人
Marie

Marie

  • フリーランスwebデザイナー&講師
  • 制作会社・インハウスデザイナーを経験し独立
  • オンラインwebデザイン教室ちいウェブ運営
  • 仕事の合間の息抜きに植物を育てています♡
  • スプラ・DIY・将棋がすき
  • 小4・年長の母

スライドショーのプラグインはslickをよく使っています

今回は、jsなしで作れるスライドショーを紹介します

HTML・CSSのみでできるので、WordPressのテーマカスタマイズ時にも扱いやすいかと思います。

フェードのスライドショー

HTML

HTMLはこちらです。

<div class="slider">
	<div></div>
	<div></div>
	<div></div>
</div>

画面幅が変わった時に画像サイズをトリミングしやすくする為に背景画像として画像を指定します。

個人的にこの空div好きじゃないのですが、この場合はやむを得ませんかね困り顔

CSS

.slider {
	width: 100vw;
	height: 60vh;
	overflow: hidden;
	position: relative;
	max-width: 100%;
}

.slider div {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-position: center center;
	background-size: cover;
	background-repeat: no-repeat;
	z-index: 10;
	opacity: 0;
	animation-name: slide-fade;
	animation-duration: 15s;
	animation-iteration-count: infinite;
}

@keyframes slide-fade {
	0%{
		opacity: 0;
	}
	20%{
		opacity: 1;
	}
	80%{
		opacity: 0;
	}
	100%{
		opacity: 0;
		z-index: 0;
	}
}
.slider div:first-of-type{
	background-image: url(../slide1.jpg);
}
.slider div:nth-of-type(2){
	background-image: url(../slide2.jpg);
	animation-delay: 5s;
}
.slider div:last-of-type{
	background-image: url(../slide3.jpg);
	animation-delay: 10s;
}

.sliderのwidth・heightがスライダー全体のサイズになるので、ここでスライダーの全体像を指定してください。

仕組みとしては、opacityを使って、ゆっくり透明から見えるようにしてというのを繰り返すアニメーションになっています。

.slider divに入っているanimation-duration: 15s;は15秒間かけて3枚の画像が表示されます。

このままだと、3枚とも15秒間のアニメーションが開始されるので、2枚目の画像をanimation-delay: 5s;(5秒後にアニメーションをスタート)、3枚目の画像をanimation-delay: 10s;(10秒後にアニメーションをスタート)させるようになっています。

すごくシンプルで簡単にスライドショーを設定できます。

だんだんひいていくスライドショー

最初のスライドショーに少し追記するだけでこのようなエフェクトが追加できます。

HTMLは先ほどと同じです。

CSS

.slider {
	width: 100vw;
	height: 60vh;
	overflow: hidden;
	position: relative;
	max-width: 100%;
}

.slider div {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background-position: center center;
	background-size: cover;
	background-repeat: no-repeat;
	z-index: 10;
	opacity: 0;
	animation-name: slide-fade;
	animation-duration: 30s; /* 30秒に変更 */
	animation-iteration-count: infinite;
	transform: scale(1.5); /* 最初に画像を大きくしておく */
}

@keyframes slide-fade {
	0%{
		opacity: 0;
	}
	20%{
		opacity: 1;
	}
	80%{
		opacity: 0;
		transform: scale(1); /* ここで画像サイズを1に戻す */
	}
	100%{
		opacity: 0;
		z-index: 0;
	}
}
.slider div:first-of-type{
	background-image: url(../slide1.jpg);
}
.slider div:nth-of-type(2){
	background-image: url(../slide2.jpg);
	animation-delay: 10s; /* 秒数を変更 */
}
.slider div:last-of-type{
	background-image: url(../slide3.jpg);
	animation-delay: 20s; /* 秒数を変更 */
}

これは、だんだんひいていくパトゥーンなのですが、だんだん拡大することもできます。

拡大させたい時は、transform: scale(1);transform: scale(1.5);を入れ替えてください。

どんな疑問が浮かぶのか今思いつかないのですが、もし何かあればコメントか質問ボックスに投げてください。5歳が描いたジャイアン

フェードじゃない通常のスライドショーもCSSのみで作成する方法を紹介しますね。

今日ちょっと嬉しいご報告をいただいたので紹介させてください。

Webデザイナーありがとうございます

極めては全然ないんですけど

いいなと思ったら
TAPしてね♡↓

コメント

  • さつ より:

    分かりやすかったです!参考にさせていただきました!

    • Marie より:

      さつさんありがとうございます!!!!!!
      早速のコメントで「え、自作自演?私の別人格がコメント書いたの?」って疑うくらい嬉しいです。(意味不明)

コメントする

CAPTCHA


コメントは承認後に表示されます。

Home Webデザイン コーディング コピペ用コード CSSだけで作るスライドショー(フェード)

関連記事

更新通知を受け取る

不定期更新の為、
メールにて更新お知らせを
お送りいたしますlove letter

(更新通知以外のメールは
お送りしませんので
ご安心ください)