【javascript】要素が画面に何%見えているか判定する
2度と使わないかもしれないけどメモしておく。
ある要素が画面の何%見えているか判定する処理。
あんまりやる機会ないと思うけど、特定の要素が100%見えたら何らかの処理するとかそんなイメージ。
<script> var target = document.getElementById("contents"); var viewportHeight = getViewportHeight(); var style = target.currentStyle || document.defaultView.getComputedStyle(target, ""); var height = parseInt(style.height); var debug = document.getElementById("debug"); setInterval(function() { var offsetY = target.getBoundingClientRect().top; var per; if (0 < offsetY) { var visible = offsetY + height - viewportHeight; if (visible < 0) { per = 1; } else { per = (height - visible) / height; if (per < 0) { per = 0; } } } else { var visible = offsetY + height; if (visible < 0) { per = 0; } else { per = visible / height; } } per = per * 100; per = Math.round(per); debug.innerText = per + "%見えてるよ"; }, 200); function getViewportHeight() { var height = window.innerHeight; if (!height) { var mode = document.compatMode; if (mode) { var domObject = mode == "CSS1Compat" ? document.documentElement : document.body; height = domObject.clientHeight; } } return height; } </script>
以上です