質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1320閲覧

splideを使用して、ローディングが終わってからスライダーをスタートしたいです。

yajio

総合スコア16

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/06/24 14:23

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ありがとうございます!
GPT-4すごすぎます!
ソースを勉強して、今後に役立てたいと思います。

投稿2023/06/24 14:39

yajio

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

この回答はGPT-4による自動生成回答です

以下のように、window.addEventListener('load', ...) の中で Splide を初期化することで、ページのローディングが完了してからスライダーが開始されるようになります。

js

1window.addEventListener('load', () => { 2 const ms = 400; 3 loader.style.transition = 'opacity ' + ms + 'ms'; 4 5 const loaderOpacity = function(){ 6 loader.style.opacity = 0; 7 } 8 const loaderDisplay = function(){ 9 loader.style.display = "none"; 10 } 11 // setTimeout(loaderOpacity, 1); 12 // setTimeout(loaderDisplay, ms); 13 // デモ用 14 setTimeout(loaderOpacity, 1000); 15 setTimeout(loaderDisplay, 1000 + ms); 16 17 // Splideの初期化をここに移動 18 var slider = new Splide( '.splide', { 19 type : 'loop', 20 autoplay: true, 21 interval: 6000, 22 speed: 1000, 23 pauseOnFocus: false, 24 }).mount(); 25});

これにより、ページのローディングが完了した後に Splide が初期化され、スライダーが最初から開始されるようになります。

投稿2023/06/24 14:24

teratail-ai

Powered by GPT-4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問