前提・実現したいこと
色分けされたsectionが画面に入ったことを探知し、表示領域が100%ならば、
入ったidを表示するものを作っています
threshold:1で全て入りきったら表示されるはずのところが、
なぜかs1が2回、s2が取得されなかったりと
おかしな挙動をします
スクロールバーを掴んでスクロールさせるのと、
マウスホイールでスクロールさせた場合の挙動も違います
どのように制御すれば、できますでしょうか?
IntersectionObserver
上記URLを参考に組んでいます
threshold:1にしてるにも関わらず初回ロード時にs1が表示されるのもおかしいです
該当のソースコード
<style> body,html{ height:100%; } </style> <script> let options = { root:document.querySelector("#aaa"), threshold:1 } window.onload=function(){ const observer = new IntersectionObserver((entries) => { if (entries[0].intersectionRatio == 0) { return; }else{ alert(entries[0].target.id); } }, options); s=document.querySelectorAll('.section'); sl=s.length; for(i=0;i<sl;i++){ observer.observe(s[i]); } } </script> <div id="aaa" style="width:100%;height:100%;overflow-y:scroll;"> <section id="s1" class="section" style="width:100%;height:100%;background:red"></section> <section id="s2" class="section" style="width:100%;height:100%;background:green"></section> <section id="s3" class="section" style="width:100%;height:100%;background:blue"></section> </div>
回答2件
あなたの回答
tips
プレビュー