前提・実現したいこと
cssのscroll-snapでフルページスクロールのページを作成しつつ、スクロール連動で要素をフェードインさせたいです。
html
1<main class="fullpage"> 2 <div class="section section01"></div> 3<div class="section section02"></div> 4</main>
css
1.fullpage { 2 overflow: scroll; 3 scroll-snap-type: y mandatory; 4 scroll-snap-stop: always; 5 height: 100vh; 6} 7.section { 8 scroll-snap-align: start; 9 height: 100%; 10 }
JavaScript
1$(document).scroll(function () { 2 let scrollTop = $(window).scrollTop(); // スクロール上部の位置 3 let areaTop = $(".section02").offset().top; // 対象エリアの上部の位置 4 let areaBottom = areaTop + $(".section02").innerHeight(); // 対象エリアの下部の位置 5 6 if (scrollTop > areaTop && scrollTop < areaBottom) { 7 console.log('section2-in') 8 $(".section02").addClass("js-show"); // スクロールが対象エリアに入った場合 9 } 10 });
cssのscroll-snapを使うとjsのスクロールイベントでスクロール連動のイベントが作動しません。
尚、当初フルページスクロール用にfulopage.jjsを使っており、次のページ(.section02)にスクロールでイベント実行はfullpage.jsの標準オプションのonleaveで可能なのですが、
今回はページ(.section02)の途中に到達した時に実行したいのでそのオプションも使えません。
それならcssのscroll-snapでなら可能かと思い試しましたがやはりスクロールでイベントが実行できません。
ここ何日間もこの問題に悩ませれています。もし解決策もしくはスクロールイベントを使わずにスクロール連動のフェードインをする方法をご存知でしたら教えてください。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/24 17:57
2021/01/24 17:59 編集
2021/01/25 00:17