前提・実現したいこと
スクロールスナップ内にフェードインを実装しようとしています。
2つ目のsection内にあるdivタグをフェードインさせたいです。上からスクロールした際にはaddClassによってクラスが付与されてフェードインができるのですが、下からスクロールした際にはクラスが付与されたままになってしまいフェードインができない状態です。
下からスクロールした際にもフェードインさせたいです。
下記が各コードになります
html
1 <main class="container"> 2 <section class="scroll-snap"> </section> 3<section class="scroll-snap position"> 4<div class="text"> //この部分をフェードイン 5<p>テキスト</p> 6</div> 7</section> 8<section class="scroll-snap"> 9 </section>
css
1container{ 2overflow: auto; 3scroll-snap-type: y mandatory; 4height: 100vh; 5} 6.scroll-snap{ 7 height: 100%; 8 scroll-snap-align: start; 9} 10 11.position{ 12position:relative; 13} 14 15.text{ 16 position: absolute; 17 top: 50%; 18 left: 50%; 19 transform: translate(-50%, -50%); 20width:200px; 21height:200px; 22}
js
1$(".container").scroll(function () { 2 let scroll = $(".container").scrollTop(); // スクロール位置を取得 3 let triTop = $(".text").offset().top; // 要素の上部の位置を取得 4 let winHeight = $(".scroll-snap").height(); 5 if (scroll >= triTop - winHeight ) { 6 $(".text").addClass("fadeIn"); 7 } else { 8 $(".text").removeClass("fadeIn"); 9 } 10});
下スクロールからの高さ位置の取得方法と位置を取得した後どのように条件式を記述したら下からスクロールした際もフェードインができるようになるかわからないです。
なかなか解決策が見つからず困っております。解決策や対象方をご存知の方がいましたら教えてください。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/11 08:45