フェードで切り替えのスライドショーを作りたいと考えています。
表示される画像が最後の画像であれば最初の画像を表示する様に実装したのですが、うまく作動しません。
スライドショーの実装にはいくつか方法があると思うのですが、今回は、画像を重ねて配置し、activeのついた画像をopacity: 1;で表示したいと考えていますがうまくいきません。
どの様にしたらうまく表示されでしょうか?
他のサイトを拝見し、参考にしようと思ったのですが、jqueryを用いたものが多く、今回はjavascriptのみで実装しなければならないので、こちらでご教授いただきたいと思い質問させていただきました。
どうか、よろしくお願いいたします。
html
1<div class="image"> 2 <div class="bg-image"> 3 <img src="img/logo-bg0.png" alt="ロゴ" class="bg-main active" /> 4 <img src="img/logo-bg1.png" alt="ロゴ" class="bg-main" /> 5 <img src="img/logo-bg2.png" alt="ロゴ" class="bg-main" /> 6 <img src="img/logo-bg3.png" alt="ロゴ" class="bg-main" /> 7 <img src="img/logo-bg4.png" alt="ロゴ" class="bg-main" /> 8 </div> 9</div>
css
1.image { 2 width: auto; 3 height: 100vh; 4 position: relative; 5 z-index: 0; 6} 7 8.bg-main { 9 position: absolute; 10 top: 0; 11 left: 0; 12 width: 100%; 13 height: 100vh; 14 opacity: 0; 15 transition: opacity 3s ease; 16 object-fit: cover; 17} 18 19.bg-main.active { 20 opacity: 1; 21}
javascript
1const bgMain = document.querySelectorAll(".bg-main"); 2let current = 0; 3 4 function slideshow() { 5 if (current === 4) { 6 current = 0; 7 } else { 8 current ++; 9 } 10 11 bgMain[current].classList.toggle('active'); 12 console.log("slide"); 13 } 14 setInterval(slideshow, 4000);
回答3件
あなたの回答
tips
プレビュー