真的不知道从哪里开始。一旦页面上的某个 div 被滚动过去,有谁知道一种从 display:none (或任何类似的东西)更改 div 的方法?
6 回答
首先,给你div
一个 ID - 例如dvid
,假设另一个div
(你想要检测滚动之后)有一个 ID othdiv
。然后你可以做这样的事情:
$(document).ready( function() {
$("#dvid").hide(); //hide your div initially
var topOfOthDiv = $("#othdiv").offset().top;
$(window).scroll(function() {
if($(window).scrollTop() > topOfOthDiv) { //scrolled past the other div?
$("#dvid").show(); //reached the desired point -- show div
}
});
});
微小的 jsFiddle 演示:微小的链接。
在窗口的 onscroll 中,从页面顶部获取当前滚动位置以及 div 的位置,并相应地显示/隐藏您的元素。
window.onscroll = function (oEvent) {
var mydivpos = document.getElementById("mydiv").offsetTop;
var scrollPos = document.getElementsByTagName("body")[0].scrollTop;
if(scrollPos >= mydivpos)
document.getElementById("noshow").className = "";
else
document.getElementById("noshow").className = "hidden";
};
滚动条和“$(窗口).scrollTop()"
我发现,在上面提供的解决方案中调用这样的功能,(在这个论坛中还有更多这样的例子——它们都运行良好)只有在滚动条实际可见并且可以操作时才能成功。
如果(正如我可能愚蠢地尝试过的那样),您希望实现这样的功能,并且您还希望,容我们说,实现一个没有滚动条的极简“干净屏幕”,例如在这个讨论中,然后是$(window)。 scrollTop()将不起作用。
这可能是一个编程基础,但我想我会向任何新手提供提醒,因为我花了很长时间才弄清楚这一点。
如果有人可以就如何克服这个问题或提供更多见解提供一些建议,请随时回复,因为我不得不在这里求助于显示/隐藏 onmouseover/mouseleave
长寿和编程,CollyG。
修改@Abody97 的答案以在 div 滚动过去后显示
http://jsfiddle.net/nickaknudson/f72vg/
$(document).ready( function() {
$("#div_to_show").hide(); //hide your div initially
$(window).scroll(function() {
// once top of div is scrolled past
if($(body).scrollTop() >= $("#div_to_scroll_past").offset().top) {
$("#div_to_show").show(); //reached the desired point -- show div
}
});
});
或者一旦 div 的底部滚动过去
$(document).ready( function() {
$("#div_to_show").hide(); //hide your div initially
$(window).scroll(function() {
// once bottom of div is scrolled past
if($(body).scrollTop() >= ( $("#div_to_scroll_past").offset().top + $("#div_to_scroll_past").outerHeight() )) {
$("#div_to_show").show(); //reached the desired point -- show div
}
});
});
资源
这是一个工作小提琴
jQuery
$(function(){
var d = $('.hidden');
var dPosTop = d.offset().top;
var win = $(window);
win.scroll(function(e){
var scrollTop = win.scrollTop();
if(scrollTop >= dPosTop){
d.show(2000);
}
else{
d.hide(2000);
}
});
});
最简单的方法是使用 jQuery 和这样的函数。
var eventPosition = 550; // This is the height position you want the event to fire on.
$(window).scroll(function(e) {
if (window.screenY >= eventPosition) {
fireEvent();
}
});
function fireEvent() {
// Add logic here to complete what you're trying to do.
};