Contents
「webサイトのヘッダー部分にスライドショーを入れたい」「スライドショーを使ってなにか作りたい」と思っている方など、スライドショーでこういう制作がしたい!と考えている人は多いと思います。
それと同時に、「スライドショーは難しそう」「JQueryやJavaScriptの使い方がわからない」という方もいると思うので、この記事では、HTML・CSSのみでスライドショーをまとめました。
スライドショーの種類は色々ありますが、その中からよりWeb制作に実用的なものをまとめたので、ぜひ自分なりにカスタマイズして使って見てください。
実用的で基本的なスライドショーとして、フェードイン・フェードアウトするスライドショーになります。
ファースビューの背景などに使えるスライドショーになります。
See the Pen slide1 by 古澤 良汰 (@ryotarofu) on CodePen.
<div class="slide"> <img class="item1" src="/images/item1.jpg" alt=""> <img class="item2" src="/images/item2.jpg" alt=""> <img class="item3" src="/images/item3.jpg" alt=""> <img class="item4" src="/images/item4.jpg" alt=""> </div>
.slide { position: relative; width: 100%; height: 400px; overflow: hidden; } @keyframes slideshow{ 0%{ opacity: 0; } 10%{ opacity: 1; } 28%{ opacity: 1 } 38%{ opacity: 0; } 100%{ opacity: 0; } } .slide img { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: auto; opacity: 0; animation :slideshow 20s linear infinite; } .slide img:nth-child(2){ animation-delay: 8s; } .slide img:last-child{ animation-delay: 16s; }
このスライドショーは3枚での設定になっているので、写真を4枚以上使用すると崩れてしまいます。
4枚以上スのライドショーをCSSで実装する場合には、キーフレームを使ったCSSアニメーションの知識が必要になってきます。
上記の基本的なスライドショーに、範囲内での拡大・縮小を加えたスライドショー
overflowを使用することで、枠内からはみ出さずに画像が拡大・縮小します。
ファースビューの背景にアクセントを付けたいときや、フードメニューなど様々な場面で活躍する便利なスライドショーになっています。
See the Pen スライド2 by 古澤 良汰 (@ryotarofu) on CodePen.
<div class="slide"> <img class="item1" src="/images/item1.jpg" alt=""> <img class="item2" src="/images/item2.jpg" alt=""> <img class="item3" src="/images/item3.jpg" alt=""> <img class="item4" src="/images/item4.jpg" alt=""> </div>
.slide{ position: relative; width: 500px; height: 300px; overflow: hidden; margin: 0 auto;
}
.item1, .item2, .item3 ,.item4{ position: absolute; top:0; left:0; width: 100%; height: 100%; background-size: cover; background-repeat: no-repeat;
}
.item1{ animation: slide1 20s infinite;
}
.item2{ animation: slide2 20s infinite;
}
.item3{ animation: slide3 20s infinite;
}
.item4{ animation: slide4 20s infinite;
}
@keyframes slide1 { 0% {opacity: 1; transform: scale(1.0);} 20% {opacity: 1;} 30% {opacity: 1;} 40% {opacity: 0; transform: scale(1.1);} 90% {opacity: 0} 100% {opacity: 1; transform: scale(1.0);}
}
@keyframes slide2 { 0% {opacity: 0;} 30% {opacity: 0; transform: scale(1.1);} 40% {opacity: 1;} 50% {opacity: 1;} 60% {opacity: 0; transform: scale(1.0);} 100% {opacity: 0;}
}
@keyframes slide3 { 0% {opacity: 0;} 50% {opacity: 0; transform: scale(1.0);} 60% {opacity: 1;} 70% {opacity: 1;} 90% {opacity: 0; transform: scale(1.1);} 100% {opacity: 0;}
}
@keyframes slide4 { 0% {opacity: 0;} 70% {opacity: 0; transform: scale(1.1);} 80% {opacity: 1;} 90% {opacity: 1;} 100% {opacity: 0; transform: scale(1.0);}
}
写真をホーバーすると、スライドが止まり、写真が浮き上がるスライドショー。
インスタグラムの投稿や、写真にリンクを付けたいとこなどに有効になってきます。
See the Pen スライド3 by 古澤 良汰 (@ryotarofu) on CodePen.
<div class="wrap slider" ontouchstart=""> <div class="slide"> <img class="item1 item" src="/images/item.jpg" alt=""> <img class="item2 item" src="/images/item.jpg" alt=""> <img class="item3 item" src="/images/item.jpg" alt=""> <img class="item4 item" src="/images/item.jpg" alt=""> </div> <div class="slide"> <img class="item1 item" src="/images/item.jpg" alt=""> <img class="item2 item" src="/images/item.jpg" alt=""> <img class="item3 item" src="/images/item.jpg" alt=""> <img class="item4 item" src="/images/item.jpg" alt=""> </div> <div class="slide"> <img class="item1 item" src="/images/item.jpg" alt=""> <img class="item2 item" src="/images/item.jpg" alt=""> <img class="item3 item" src="/images/item.jpg" alt=""> <img class="item4 item" src="/images/item.jpg" alt=""> </div> </div>
img { width: 200px; height: 200px; } .wrap { overflow: hidden; display: flex; align-items: center; height: 340px; margin-bottom: 100px; } .slide { display: flex; -webkit-animation: slide 20s infinite linear 1s both; animation: slide 20s infinite linear 1s both; } @-webkit-keyframes slide { from { transform: translateX(0); } to { transform: translateX(-100%); } } @keyframes slide { from { transform: translateX(0); } to { transform: translateX(-100%); } } .slider:hover .slide { -webkit-animation-play-state: paused; animation-play-state: paused; } .item { transition: all 0.2s; margin-right: 20px; } .item:hover { transform: translateY(-20px); border-radius: 10px; box-shadow: 0 3px 10px 0 #333; opacity: 1; cursor: pointer; }
今回はWeb制作で実用的なスライドショーについてまとめました。
上記でまとめたスライドショー以外にも、多種多様なスライドショーがまだまだあります。
自分の制作物に合うスライドショーを見つけて、制作の幅を増やしましょう。