🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS3

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

852閲覧

jqueryのフェードイン・アウトで画像切り替えをすると画面のリサイズで画像の切り替わりが早くなってしまう

spbob

総合スコア9

CSS3

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/12/23 06:43

とあるサイトのFVで、jqueryのフェードイン・アウトを使って画像の切り替えを行っています。

全画面での初期表示時は問題なく表示されるのですが、小さな画面で開いたり、画面のリサイズをおこなうと、
画像の切り替わりが早くなってしまいます。
こちらを回避したい場合、どの部分を修正すればよいでしょうか。
またもっと効率的な方法がありましたら教えていただきたく、お願いいたします。

以下設定しているコードです。

HTML

1<section class="mainView"> 2 <div id="slide"> 3 <ul> 4 <li><img class="active" src="sample01.jpg" alt=""></li> 5 <li><a href="sample02.jpg" alt=""></a></li> 6 <li><a href="sample03.jpg" alt=""></a></li> 7 <li><a href="sample04.jpg" alt=""></a></li> 8 </ul> 9 </div> 10</section> 11

CSS

1.mainView #slide { 2 height: 340px; 3 margin: 0 auto; 4 position: relative; 5} 6 7.mainView #slide li { 8 overflow: hidden; 9} 10 11.mainView #slide li img { 12 position: absolute; 13 left: 50%; 14 top: 165px; 15 transform: translate(-50%, -50%); 16 z-index: 8; 17 height: 340px; 18 margin: auto; 19} 20

Javascript

1// TOPスライドショー 2$(window).on("load resize",function(){ 3 var slide = document.getElementById("slide"); 4 if (slide){ 5 // 設定 6 var $winW = window.innerWidth; // 横幅 7 var $winH = 340; // 高さ 8 if($winW > 480){ 9 var $winH = 340; 10 }else{ 11 var $winH = 140; 12 } 13 var $interval = 5000; // 切り替わりの間隔(ミリ秒) 14 var $fade_speed = 2000; // フェード処理の早さ(ミリ秒) 15 $("#slide ul li").css({ 16 "position": "relative", 17 "overflow": "hidden", 18 "width": $winW, 19 "height": $winH 20 }); 21 $("#slide ul li").hide().css({ 22 "position": "absolute", 23 "top": 0, 24 "left": 0 25 }); 26 27 $("#slide ul li:first").addClass("active").show(); 28 setInterval(function () { 29 var $active = $("#slide ul li.active"); 30 var $next = $active.next("li").length ? $active.next("li") : $("#slide ul li:first"); 31 $active.fadeOut($fade_speed).removeClass("active"); 32 $next.fadeIn($fade_speed).addClass("active"); 33 }, $interval); 34 } 35});

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

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

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

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

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

guest

回答2

0

resizeイベントのように何度も起こる可能性のあるイベントの中に全部の処理を書いてしまうと、イベントのたびに全ての処理を再登録してしまうことになります。今回のもので言えばsetIntervalが何度も登録されていくことになり、がたがた動くことになるとおもいます。

一度登録すればよいものと、そうでないものを分けて処理を考えてみてください。

投稿2020/12/24 05:19

kei344

総合スコア69596

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

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

0

ぱっとみ「ウィンドウサイズによって切り替わりスピードが変わる」ようなコードには見えないのですが、実際のサイトを共有することはできないものでしょうか?

怪しいとすればClass操作メソッドがfadeIn,Outのコールバックに指定されていないあたりでしょうか。

投稿2020/12/24 03:37

unrealsho

総合スコア93

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問