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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

737閲覧

【JavaScript】フェードインが完了したらスクロールの監視を終了する方法を教えていただけないでしょうか。

退会済みユーザー

退会済みユーザー

総合スコア0

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/05/23 04:55

編集2020/05/23 11:50

前提・実現したいこと

初めて質問します。よろしくお願いいたします。
コーディング歴は半年で、js はプラグインに頼るばかりであまり経験がありません。

下記の一連の動作を js または jQuery で作る方法を教えていただきたいです。

  1. スクロールで画像がフェードイン
  2. フェードインした画像のみスクロールの監視が終了
  3. その他の画像はフェードインするまでスクロールの監視が継続
  4. 最終的に、すべての画像のフェードインが完了すると

スクロールによる監視は完全に終了

発生している問題

上記2番目の「フェードインした画像のみスクロールの監視が終了」
という部分の実装ができません。

該当のソースコード

html

1<p><img class="fade" src="" alt=""></p> 2<p><img class="fade" src="" alt=""></p> 3<p><img class="fade" src="" alt=""></p> 4<p><img id=“js-stop” class="fade" src="" alt=""></p> <!-- これがフェードインすると監視終了 -->

css

1.fade { 2 opacity : 0; 3 transition: opacity 2s; 4} 5 6.fade-in { 7 opacity: 1; 8}

js

1 // スクロール量を検知し、フェードインする 2 function animation() { 3 $('.fade').each(function () { 4 var target = $(this).offset().top; 5 var scroll = $(window).scrollTop() - 200; 6 var windowHeight = $(window).height(); 7 if (scroll > target - windowHeight) { 8 $(this).addClass('fade-in'); 9 } 10 }); 11 } 12 13 // #js-stop(4つ目の画像)がフェードインすると監視終了 14 animation(); 15 var stop = document.getElementById('js-stop'); 16 $(window).scroll(function () { 17 if (stop.classList.contains('fade-in') == true) { 18 return false; 19 } else { 20 animation(); 21 } 22 });

試したこと

「.fade-in が付与されたら、その要素だけは監視を終了する」
という解釈になると思うのですが、具体的な方法に検討がつきません。

考えた挙句に上記の「#js-stop(最後の画像)に .fade-in が付与されたら終了する」という処理になりました。

以上が質問です。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

transitionend イベント が使えるかもしれません。

【jQueryでCSSアニメーションが終わったタイミングのイベントでの実行 | 大阪市天王寺区SOHOホームページ制作 | デザインサプライ-DesignSupply.-】
https://designsupply-web.com/knowledgeside/3217/

【CSS3のアニメーション終了時のイベント | MONOCHROME DESIGN|東京阿佐ヶ谷フリーランスWEBデザイナー。WordPressのホームページ/ウェブサイト制作】
https://monochrome-design.jp/blog/511

投稿2020/05/23 11:53

kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問