gpt4 book ai didi

javascript - 检查元素是否在视口(viewport)中无法正常工作

转载 作者:行者123 更新时间:2023-12-01 01:15:01 25 4
gpt4 key购买 nike

我有三个元素 - 每个元素从一开始就是隐藏的。如果用户滚动到它们,它们就会出现。我编写了一个函数来检查名为 bubbles 的元素是否在视口(viewport)内。如果是,那么函数应该显示其余元素。

但事实并非如此。元素 boxes 比元素 bubbles 更高,并且它还触发一个函数。但不应该。我不知道问题出在哪里。

document.addEventListener("scroll", checkViewport);

function checkViewport() {

var bubbles = document.getElementsByClassName("bubble-chat");
var boxes = document.getElementsByClassName("boxes");
var avatar = document.getElementsByClassName("msg-avatar");

for (let i = 0; i < avatar.length; i++) {
var bounding = bubbles[i].getBoundingClientRect();

if (
bounding.top >= 0 &&
bounding.left >= 0 &&
bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight)
) {
avatar[i].style.opacity = "1";
bubbles[i].style.opacity = "1";
(function(i) {
setTimeout(function() {
bubbles[i].style.display = "none";
boxes[i].style.opacity = "1";
}, 3000);
})(i);
}
}
}

最佳答案

您还应该考虑滚动定位,因为边界框是相对于滚动定位的。固定代码:

  bounding.top >= document.documentElement.scrollTop &&
bounding.left >= 0 &&
bounding.right <= (window.innerWidth || document.documentElement.clientWidth) &&
bounding.bottom <= document.documentElement.scrollTop + (window.innerHeight || document.documentElement.clientHeight)

关于javascript - 检查元素是否在视口(viewport)中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com