视口JS中显示多少元素

我知道您会将我引荐到this thread,但是我的问题有点不同,我想要一个纯JavaScript解决方案,没有jquery或其他库内容。

我想确定我的div中有多少百分比显示在视口中,当我滚动时,我想要这样的图像:

视口JS中显示多少元素

下面是我的代码:

let VisibilityPercent = [];

const OnScroll = () => {

  Array.prototype.forEach.call(document.getElementsByClassname('mydiv'),function(element) {
    VisibilityPercent.push(GetVisibilityPercent(element));
  });

};

document.addEventListener("scroll",OnScroll);

const GetVisibilityPercent = (element) => {
  // The function that determines the visibility of element at current viewport
}

// So that VisibilityPercent would be something like this : [100%,100%,50%,0]
<div class="mydiv">
  <p>Lorem ipsum dolor sit amet,consectetuer adipiscing elit,sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam,quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex
    ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat,vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
    augue duis dolore te feugait nulla facilisi.</p>
</div>

<div class="mydiv">
  <p>Lorem ipsum dolor sit amet,vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
    augue duis dolore te feugait nulla facilisi.</p>
</div>

a503030714 回答:视口JS中显示多少元素

我使用以下功能解决了该问题:

const GetVisibilityPercent = (element) => {

    let observer = new IntersectionObserver(
        (entries,observer) => {
            entries.forEach(entry => {
                let percent = (Math.floor(entry.intersectionRatio * 100)) + "%";
            });
        },{
            root: null,rootMargin: '0px',threshold: 1.0
        }
    );

    observer.observe(element);

};
本文链接:https://www.f2er.com/3163884.html

大家都在问