実現したいこと
splideを使用して、ローディングが終わってからスライダーをスタートしたい。
前提
splideを使用して、3枚の画像をスライドできるようになりました。
ページローディング後に1の初めからではなく、2くらいから始まってしまいます。
スライダーのソースコード
html
1<div id="splide" class="splide" role="group" aria-label="Splideの基本的なHTML"> 2 <div class="splide__arrows"> 3 <button class="splide__arrow splide__arrow--prev button prev"></button> 4 <button class="splide__arrow splide__arrow--next button next"></button> 5 </div> 6 <div class="splide__track"> 7 <ul class="splide__list"> 8 <li class="splide__slide sl1"><img class="op" src="splide/1.png" alt=""/><img src="img/imdex/sp1.png" alt=""/></li> 9 <li class="splide__slide sl2"><img class="op" src="splide/2.jpg" alt=""/><img src="img/imdex/sp2.png" alt=""/></li> 10 <li class="splide__slide sl3"><img class="op" src="splide/3.jpg" alt=""/><img src="img/imdex/sp3.png" alt=""/></li> 11 </ul> 12 </div> 13 </div>
js
1document.addEventListener('DOMContentLoaded', function() { 2var slider = new Splide( '.splide', { 3 type : 'loop', 4 autoplay: true, 5 interval: 6000, 6 speed: 1000, 7 pauseOnFocus: false, 8}).mount(); 9 })
ローディングのソースコード
html
1<div id="js-loader" class="loader"></div>
css
1.loader { 2 align-items: center; 3 background: #fff; 4 bottom: 0; 5 display: flex; 6 justify-content: center; 7 left: 0; 8 position: fixed; 9 right: 0; 10 top: 0; 11 z-index: 999; 12} 13.loader::after { 14 animation: loader 0.5s linear infinite; 15 border: 1px solid orange; 16 border-radius: 50%; 17 border-right: 1px solid rgba(255, 165, 0, 0.2); 18 border-top: 1px solid rgba(255, 165, 0, 0.2); 19 content: ""; 20 height: 70px; 21 width: 70px; 22} 23 24@keyframes loader { 25 0% { 26 transform: rotate(0); 27 } 28 100% { 29 transform: rotate(360deg); 30 } 31}
js
1const loader = document.getElementById('js-loader'); 2window.addEventListener('load', () => { 3 const ms = 400; 4 loader.style.transition = 'opacity ' + ms + 'ms'; 5 6 const loaderOpacity = function(){ 7 loader.style.opacity = 0; 8 } 9 const loaderDisplay = function(){ 10 loader.style.display = "none"; 11 } 12 // setTimeout(loaderOpacity, 1); 13 // setTimeout(loaderDisplay, ms); 14 // デモ用 15 setTimeout(loaderOpacity, 1000); 16 setTimeout(loaderDisplay, 1000 + ms); 17});
試したこと
上記のようなソースコードでかいております。
わざと重めの画像を貼り、サーバーに上げてブラウザで閲覧すると、1の初めからではなく2くらいから始まってしまいます。
document.addEventListener('DOMContentLoaded', function() {
でページが読み込まれてから発火できるとのさいとをみつけ
jQueryで動く「きっかけ」を指定しよう
設置してみたのですが、スライダーは動きますが途中からで・・・。
ご意見いただけましたら幸いです。
補足情報(FW/ツールのバージョンなど)
win11
仕様ソフト:dreamweaver
閲覧ブラウザ:chrome
閲覧ブラウザ:edge

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。