【发布时间】:2016-05-01 10:59:32
【问题描述】:
您好,当我滚动时,我正在尝试获取元素现在是否在屏幕上。我有这个代码:
$(window).scroll(function() {
if (checkVisible($('.tester'))) {
$('.wrapper').css("background-color", "#4f4");
} else {
$('.wrapper').css("background-color", "#f44");
}
});
function checkVisible(elm, eval) {
eval = eval || "visible";
var vpH = $(window).height(), // Viewport Height
st = $(window).scrollTop(), // Scroll Top
y = $(elm).offset().top,
elementHeight = $(elm).height();
if (eval == "visible") return ((y < (vpH + st)) && (y > (st - elementHeight)));
if (eval == "above") return ((y < (vpH + st)));
}
body, html {
height: 100%;
}
.wrapper {
height: 400%;
background: none repeat scroll 0 0 #f44;
}
.tester {
position: absolute;
left: 50%;
width: 300px;
height: 600px;
background: none repeat scroll 0 0 #fff;
border: 5px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<div class="tester"></div>
</div>
<div class="wrapper">
<div class="tester"></div>
</div>
它很好用
好的,我编辑了代码,所以现在它是类而不是 id。一切都一样 - 不能正常工作,只有第一个“测试员”。
【问题讨论】:
-
不要对多个元素使用相同的 id。无效。
-
an
id对于整个文档应该是唯一的。如果您有两个具有相同id的元素,则您的 html 在技术上是无效的。在这种情况下,您应该使用类而不是 id。 -
不要重新发明轮子。看看这个小库imakewebthings.com/waypoints
-
我知道,这只是一个例子,我使用相同的类,但一切都像 id's(
标签: javascript jquery html css scroll