假设我有一些div
,其结构如下
<main>
<header id="foo"></header>
<article id="bar"></bar>
<div id="someDiv"></div>
<div id="stickyDiv"></div>
<footer id="bikiniBottom"></footer>
stickyDiv
是位于页面底部的元素。只有当用户使用javascript向下滚动页面时,它才会出现,当用户滚动到顶部时,它会消失
var prevScrollpos = window.pageYOffset;
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos < currentScrollPos) {
document.getElementById("stickyDiv").style.bottom = "0";
} else {
document.getElementById("stickyDiv").style.bottom = "-80px";
}
prevScrollpos = currentScrollPos;
}
在这种情况下,我想问一下如何使前面的脚本只在到达bar
元素时才起作用,然后在到达页脚之前再次消失
谢谢
发布于 2018-08-21 10:41:12
这取决于你所说的到达bar元素是什么意思。我假设你的意思是,当bar到达顶部时,显示页脚并隐藏页脚,然后bar就会消失。我已经包括了一个范围,因为有时滚动位置可能会错过,如果用户滚动快。请根据您的需要随意调整
你可以这样做,
var $el = $('#bar');
var top = $el.position().top;
var bottom = top + $el.height();
if(Math.abs(top - $(window).scrollTop()) < 5) {
console.log('Bar is at the top');
document.getElementById("stickyDiv").style.bottom = "0";
}
if(Math.abs(bottom - $(window).scrollTop()) < 5) {
console.log('Bar went out of view');
document.getElementById("stickyDiv").style.bottom = "-80px";
}
https://stackoverflow.com/questions/51946301
复制相似问题