IntersectionObserverについてです
要素が画面内に入ってきたかを判定するもので、
画面内に入っていたらstyle.background="red"としたいですが、
最初の実行で画面に入ってるdivタグ10個に対し、赤色にし、以後スクロールに応じて個別に赤色にしていきたいですが、
最初の実行で画面に入ってるdivタグ10個に対し、赤色がうまくいきません
現状のコードは下記になります
どのようにすれば実現可能でしょうか?
疑問点としてスクロールした際に取りこぼしのような事象も発生しています
スクロールに応じて赤くなっていく際に1個飛ばしで赤くなったりという点です
詳しい方教えて下さい
<style> body,html{ height:100%; } </style> <script> let options = { root:document.querySelector("#test"), threshold:0, rootMargin:"0px 0px -100% 0px" } window.onload=function(){ const observer = new IntersectionObserver((entries) => { if(entries[0].isIntersecting){ document.getElementById(entries[0].target.id).style.background="red"; } }, options); a=document.querySelectorAll('.divdiv'); c=a.length-1; for(i=0;i<=c;i++){ observer.observe(a[i]); } } </script> <div id="test"> <div id="aaaa1" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa2" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa3" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa4" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa5" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa6" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa7" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa8" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa9" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa10" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa11" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa12" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa13" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa14" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa15" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa16" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa17" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa18" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa19" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa20" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa21" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa22" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa23" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa24" class="divdiv" style="width:100%;height:10%">div</div> <div id="aaaa25" class="divdiv" style="width:100%;height:10%">div</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/16 06:44
退会済みユーザー
2021/06/16 06:51
2021/06/16 06:56
2021/06/16 07:02
退会済みユーザー
2021/06/16 07:12
2021/06/16 09:26
退会済みユーザー
2021/06/16 10:17