こんにちは、mickです。
CSSでスライドショーとパララックスの組み合わせを紹介します。
CSSで画像をスライドショーしながらパララックスする方法
CSSでスライドショーをしながらパララックする方法は、次のシンプルな組み合わせ。
- CSSでスライドショーを実装する
- CSSでパララックスを実装する
それぞれ、このブログで記事を書いています。
リンクを張っておきますので、ぜひ見てみてください。
プレビュー:CSSでスライドショーしながらパララックスする
スライドショーしながらパララックスのプレビューはこちら。
スライドショーの背景は、5秒ごとに4枚の画像が切り替わります。
このように、CSSで書いたスライドショーとパララックスは組み合わせることができます。
HTMLコーディング
<div class="slide">
<div class="bgImg srcImage1 parallax"></div>
<div class="bgImg srcImage2 parallax"></div>
<div class="bgImg srcImage3 parallax"></div>
<div class="bgImg srcImage4 parallax"></div>
<div class="parallaxString">パララックス</div>
</div>
それぞれのdivタグの表示と非表示のタイミングを合わせることで、擬似スライドショーが出来上がります。
さらに、それぞれの背景画像に対してパララックスの効果を加えることで、スライドショーでもパララックスの効果が得られるようにしています。
スライドショーを増やしたり減らしたりするいは、divタグの数を調整します。
CSSコーディング
/* 全体 */
.slide {
position : relative;
max-width : 100%;
height : 400px;
margin : auto;
overflow : hidden;
}
/* スライドショー背景の設定 */
.slide .bgImg {
position : absolute;
top : 0;
left : 0;
bottom : 0;
right : 0;
opacity : 0;
background-size:cover;
/* 4枚を5s毎で計20s */
animation : pseudoAnimation 20s infinite; /* infiniteで繰り返す */
}
/* 時間差で背景画像のアニメーションを開始 */
.slide .srcImage1 {
background-image : url(wp-content/uploads/2020/09/yamasha_eternal_2_TP_V4.jpg); /* 背景の画像を指定 */
}
.slide .srcImage2 {
background-image : url(wp-content/uploads/2020/10/ray-hennessy-gdTxVSAE5sk-unsplash.jpg); /* 背景の画像を指定 */
animation-delay : 5s;
}
.slide .srcImage3 {
background-image : url(wp-content/uploads/2020/10/yuyakeaozora_TP_V4.jpg); /* 背景の画像を指定 */
animation-delay : 10s;
}
.slide .srcImage4 {
background-image : url(wp-content/uploads/2020/10/pierpaolo-lanfrancotti-NKUEACkOhbk-unsplash.jpg); /* 背景の画像を指定 */
animation-delay : 15s;
}
/* 20sのうち最初の約5sだけ表示する */
@keyframes pseudoAnimation {
0% { opacity: 0; }
5% { opacity: 1; } /* 表示タイミングをずらしてフェードイン風に */
25% { opacity: 1; }
30% { opacity: 0; }
100% { opacity: 0; }
}
/* パララックスをみるための文字 */
.slide .parallaxString{
position : absolute;
padding : 15px;
font-size: 3rem;
color : #fff;
background : rgba(0, 0, 0, 0.2);
top : 50%; /* absoluteにおける上下集中央寄せ */
left : 50%;
transform : translate(-50%,-50%);
z-index : 1;
}
.parallax {
/* パララックスをつくる部分 */
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
スライドショー部分のポイントは、.slide .srcImage1セレクタのanimationプロパティ。そして@keyframes。
さらに、.slide .srcImage2セレクタなどのanimation-delayプロパティ。
スライドショー部分に関する詳しい解説を「CSSを使ってスライドショーを実装する方法【プラグイン、JavaScript不要】」でしています。
ぜひ見てみてください。
パララックス効果のポイントは.parallaxセレクタです。
「background-attachment: fixed;」でパララックスの効果をつくりだしています。
「background-repeat: no-repeat;」で背景画像が並ばないようにします。背景画像が並ぶとパララックスの効果が弱まるからです。
「background-repeat: cover;」で背景画像が画面いっぱいに広がるようにします。
「background-position: center;」で背景画像が中央を基準に設置するようにします。
今回文字を重ねるのに、.slide .parallaxStringセレクタで「position : absolute;」を利用しています。
また、「z-index: 1;」でスライドショーよりも全面に文字が来るように指定しています。
まとめ。
CSSで画像をスライドショーしながらパララックスする方法を紹介しました。
CSSで画像をスライドショーすること。
CSSでパララックス効果をだすこと。
それぞれはシンプル。
だけど組み合わせると視覚効果としてはかなり大きくなります。
これに似た方法をJavaScriptで実装しているWebサイトを見たことがあります。
そういったWebサイトもこの方法に置き換えたらかなりパフォーマンスアップが期待できますね。
以上、みなさまの助けなれば幸いです。
初稿 2020/10/13