html
1 <body> 2 3 <main> 4 <div class="a content"></div> 5 <div class="b content"></div> 6 <div class="c content"></div> 7 </main> 8 9 </body> 10
css
1*{ 2 padding: 0; 3 margin: 0; 4} 5.a,.b,.c{ 6 width: 100vw; 7 height:100vh; 8} 9 10.a{ 11 background-color: #f00; 12} 13.b{ 14 background-color: #0f0; 15} 16.c{ 17 background-color: #00f; 18} 19
js
1$(function(){ 2 $(window).scroll(function (){ 3 $('.content').each(function(){ 4 var elemPos = $(this).offset().top; 5 var scroll = $(window).scrollTop(); 6 var windowHeight = $(window).height(); 7 if (scroll > elemPos - windowHeight + 200){ 8 $('.content').removeClass('scrollin'); 9 $(this).addClass('scrollin'); 10 var scrollin_h = $(".scrollin").height(); 11 console.log(scrollin_h); 12 } 13 console.log(elemPos) 14 console.log(scroll) 15 console.log(windowHeight) 16 17 // このままだと「a」でスクロールが硬直されてしまう 18 // 下記のこの記述をスクロールする度にイベントを起こしたい 19 // 次のscrollinへ次のscrollinへとoffsetTopでスクロールしてほしい 20 // スクロールする度に下記をanimate化しスクロール→animate発火にするべき? 21 if( windowHeight+scroll > scrollin_h ){ 22 $("html,body").animate({scrollTop:$(".scrollin")},"swing"); 23 }; 24 }); 25 26 setTimeout(function(){ 27 $(".content").removeClass("scrollin"); 28 },3000); 29 }); 30 }); 31
if分でそれぞれ条件に見合った動きにできるのか
それともscrollされる度にanimateを発火させる記述にするのか(その記述がわからない)
この挙動に関してここ1ヶ月苦しまれて完全に詰まってます
どなたか解決策を教えていただきたいです
何卒よろしくお願いします
回答1件
あなたの回答
tips
プレビュー