画面をスクロールしていき、特定のID名が現れた時に関数(フェードイン)を実行させたいです。
特定のID名(id="is-fadeAnimeTrigger")はJS関数を発火させるトリガーとして配置していて全て同名となっており、HTML内に複数存在しています。
each文で繰り返し処理させようとしましたが1個目以降動くことはありませんでした。
eachだとHTML上に存在する特定の要素を全て取得できると思ったのですが、、。
やはり各々のクラス名に引っ掛けるしか方法はないのでしょうか。
なにかいい方法があれば教えていただきたいです。
よろしくおねぎいします。
<section class="l-topics"> <div class="p-topics"> <div class="p-topics__icon"> <img src="{{ root }}/assets/img/topics.png" alt="" /> <p class="p-topics__title">Topics</p> </div> <div class="p-topics__content"> <div class="p-topics__post-wrap" id="is-fadeAnimeTrigger"> <div class="p-topics__post"> <p class="p-topics__image"> <img src="{{ root }}/assets/img/post_image_news.jpg" alt="" /> </p> <p class="p-topics__post-title">予約</p> <p class="p-topics__details">2021/07 | News</p> </div> <div class="p-topics__post"> <p class="p-topics__image"> <img src="{{ root }}/assets/img/post_image_news.jpg" alt="" /> </p> <p class="p-topics__post-title">予約</p> <p class="p-topics__details">2021/07 | News</p> </div> </div> </div> </div> </section> <section class="l-concept"> <div class="p-concept"> <div class="p-concept__heading-wrap"> <p class="c-heading">concept</p> <p class="p-concept__heading-eng" id="is-fadeAnimeTrigger"> umai </p> <p class="p-concept__heading-ja" id="is-fadeAnimeTrigger"> 美味いもの </p> </div> <p class="p-concept__details"> 美味いもの </p> </div> </section>
$(function () { const fadeInAnimation = () => { // eslint-disable-next-line no-unused-vars var index = 0; const fadeAnimeTrigger = $("#is-fadeAnimeTrigger"); $(window).on('scroll', function (){ fadeAnimeTrigger.each(function() { let position = $(this).offset().top; let scroll = $(window).scrollTop(); let windowHeight = $(window).height(); if (scroll > position - windowHeight + 50){ $(this).addClass("is-fadeUpTrigger"); } index++; console.log(index); }); }); } fadeInAnimation(); });
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/28 01:51