CSSだけで作るスライドショー(フェード)
スライドショーのプラグインは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);
を入れ替えてください。
どんな疑問が浮かぶのか今思いつかないのですが、もし何かあればコメントか質問ボックスに投げてください。
フェードじゃない通常のスライドショーもCSSのみで作成する方法を紹介しますね。
今日ちょっと嬉しいご報告をいただいたので紹介させてください。
ありがとうございます
極めては全然ないんですけど
いいなと思ったら
TAPしてね♡↓
超基本【CSS】ボタンの”ホバーエフェクト”とりあえずこれ CSSだけで作るループスライダー
コメント
分かりやすかったです!参考にさせていただきました!
さつさんありがとうございます!!!!!!
早速のコメントで「え、自作自演?私の別人格がコメント書いたの?」って疑うくらい嬉しいです。(意味不明)
コメントは承認後に表示されます。