お世話になります。
Rails によるwebアプリケーションの開発を行っております。
現在HomepageにてJavaScriptによるimage5枚のスライドを作成中です。
他のリンクよりHomepageに飛んでくると、画像表示のスライドが速くなってしまいます。
$(document).ready(function() { if (window.name != "reloaded") { location.reload(); window.name = "reloaded"; } else { window.name = ""; } });
こちらを下記に記述すると解決するのですが根本的な解決になっておらず、また問題もある為下記のコードを見直しています。
以下JavaScriptのコードです。
$(function () { let slideCurrent = 0; // スライド現在値, 1枚目のスライド番号 let lastCurrent = $('.slide-list').length - 1; // スライドの合計数=最後のスライド番号 $('.slide-list').css('display', 'none'); // 先にすべてのスライドを非表示 $('.slide-list').eq(slideCurrent).css('display', 'block'); // 最初のスライドを表示 // スライドの切り替わりをchangeSlideとして定義 function changeSlide() { $('.slide-list').fadeOut(1000); // 現在のスライドフェードアウト $('.slide-list').eq(slideCurrent).fadeIn(1500); // 次のスライドをフェードイン }; // 一定時間毎に処理実行するstartTimerを定義 function startTimer() { Timer = setInterval(function () { if (slideCurrent === lastCurrent) { // 現在のスライドが最終スライドの場合 slideCurrent = 0; changeSlide(); // スライド初期値の値を代入して関数実行(初めのスライドに戻す) } else { slideCurrent++; changeSlide(); // そうでなければスライド番号を増やして次のスライドに切り替え }; }, 3000); // 実行スパン3秒 } // startTimer関数を止めるstopTimerを定義 function stopTimer() { clearInterval(Timer); // setIntervalで設定したタイマーの取り消し } startTimer(); });
以下html, cssです。
<!-- html --> <div class="first-view"> <%= link_to "about", pages_about_path, class: "about-link" %> <ul class="slide-area"> <li class="slide-list"></li> <li class="slide-list"></li> <li class="slide-list"></li> <li class="slide-list"></li> <li class="slide-list"></li> </ul> </div> <!-- css --> .slide-area { width: 100%; height: 1130px; position: relative; max-width: 1550px; margin: 0 auto; } .slide-list { width: 100%; height: 100%; position: absolute; top: 0; left: 0; background-size: cover; background-position: center; background-repeat: no-repeat; text-align: center; } .slide-list:nth-child(1) { background-image: url("slide_1.jpg"); } .slide-list:nth-child(2) { background-image: url("slide_2.jpg"); } .slide-list:nth-child(3) { background-image: url("slide_3.jpg"); } .slide-list:nth-child(4) { background-image: url("slide_4.jpg"); } .slide-list:nth-child(5) { background-image: url("slide_5.jpg"); }
JavaScript初学者でして原因を突き止めきれません。
アドバイス頂けましたら幸いです。
よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー