画像をCSSアニメーションを使って自動でスライドさせることが出来たので、備忘録として残すことにします。
画像をCSSアニメーションを使って自動でスライドさせる方法
HTML
<h2>無限スクロール</h2> <div class="slider"> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> </div> <h2>無限スクロール(ホバーしたらストップする)</h2> <div class="slider slide-paused" ontouchstart=""> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> <ul class="slide-show"> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> <li class="content"> <img src="https://yujiromx.com/wp-content/uploads/2022/01/1.jpg" alt=""> </li> </ul> </div>
ulタグを3つ用意する理由は、横に自動スライドした際にulタグが1つだど自動スライドが途中で切れてしまうからです。
CSS
body { padding: 50px 20px; } h2 { margin-bottom: 30px; } .content { width: 33.333vw; margin: 0 2.604vw; } .slider { overflow: hidden; display: flex; align-items: center; margin-bottom: 100px; } .slide-show { display: flex; justify-content: left; -webkit-animation: loop 20s infinite linear 1s both; animation: loop 20s infinite linear 1s both; } /* loopのアニメーション */ @-webkit-keyframes loop { from { transform: translateX(0); } to { transform: translateX(-100%); } } @keyframes loop { from { transform: translateX(0); } to { transform: translateX(-100%); } } /* 画像をhoverした時にストップさせる */ .slide-paused:hover .slide-show { -webkit-animation-play-state: paused; animation-play-state: paused; }ぽ
ポイントはCSSアニメーションの指定と、画像をhoverした際にストップさせる実装です。
まとめ
以上が、画像をCSSアニメーションを使って自動でスライドさせる方法です。