特定の要素(何度もでてくる)が画面に表示されている間はclassをつけ、表示されなくなったらclassを削除するようにしたいです。
具体的には
背景が黒のときは、fixedしたタイトルを白に、
背景が白のときは、タイトルを黒にしたいです。
黒背景が表示されているときは、タイトルからclassを取り、
白背景が表示されているときに、タイトルにclassをつけようと考えました。
hteml
1<div class="container"> 2<p class="title">タイトル</p> 3 <div class="content01"> 4 <div class="bg_black"> 5 <!-- 黒背景・略 --> 6 </div> 7 <div class="bg_white"> 8 <!-- 白背景・略 --> 9 </div> 10 </div><!-- /content01 --> 11 12 <div class="content02"> 13 <div class="bg_black"> 14 <!-- 黒背景・略 --> 15 </div> 16 <div class="bg_white"> 17 <!-- 白背景・略 --> 18 </div> 19 </div><!-- /content02 --> 20</div>
css
1.container{positoin:relative; color:#fff;} 2.title {position:fixed; left:0; top:0; color:#fff;} 3.bg_black {background: #000;} 4.bg_white {background: #fff;} 5.is_black {color: #000 !important;}
下記のサイトを参考にしましたが、bg_blackとbg_whiteが1つづつしかない場合はうまくいったのですが、
複数あると、一番最後のbg_whiteが表示されたときにしか、is_blackのclassが付与されませんでした。
https://into-the-program.com/scroll-disp-elem/
javascript
1$(window).on('scroll', function (){ 2 3 var bgWhite = $('.bg_white'); 4 var isBlack = 'is_black'; 5 6 bgWhite.each(function () { 7 var elemOffset = $(this).offset().top; 8 var scrollPos = $(window).scrollTop(); 9 if(scrollPos > elemOffset){ 10 $('.title').addClass(isBlack); 11 }else { 12 $('.title').removeClass(isBlack); 13 } 14 }); 15}); 16
繰り返す要素に対してはどのように対応したら良いでしょうか?
当方、プログラム系は初心者のため、うまく伝えられなくて申し訳ありませんが
ご教示いただけますと幸いです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。