jqueryを使って、スクロールされたら、要素を表示させようと思い、eachを使ったのですが、最初の要素が現れた時に、同時にすべての要素が一緒に表示されてしまいます。
それぞれの高さにスクロールされた時に、別々に表示したいのですが、どこのコードが間違っているのでしょうか?
HTML
1<section class="elm"> 2<div class="overlay"></div> 3<div class="titleLine"></div> 4</section> 5<section class="elm"> 6<div class="overlay"></div> 7<div class="titleLine"></div> 8</section> 9<section class="elm"> 10<div class="overlay"></div> 11<div class="titleLine"></div> 12</section> 13<section class="elm"> 14<div class="overlay"></div> 15<div class="titleLine"></div> 16</section> 17
CSS
1.overlay{ 2 opacity: 0; 3 transition: 1.5s; 4} 5.overlay.fadeOn{ 6 opacity: 1; 7} 8.titleLine{ 9 opacity: 0; 10} 11.titleLine.fadeOn{ 12 opacity: 1; 13}
jquery
1$(window).on('scroll',function (){ 2 var scroll = $(window).scrollTop(); 3 var windowHeight = $(window).height(); 4 5 $('.elm').each(function(){ 6 var elmPos = $(this).offset().top; 7 if (scroll > elmPos - windowHeight + windowHeight/3){ 8 9 var elmWhatOverlay = $('.overlay'); 10 var elmWhatTitleLine = $('.titleLine'); 11 12 elmWhatOverlay 13 .add(elmWhatTitleLine) 14 .addClass('fadeOn'); 15 16 } else { 17 // $(this).removeClass('fadeOn'); 18 } 19 } 20 }); 21});