我正在创建一个导航栏。添加javascript有两个功能。第一,当用户向下滚动时,导航栏将不可见。第二,如果用户到达网页的末尾或中途向上滚动,不可见的导航栏将再次可见。我无法在我的代码中找到问题,如果有人能为我指出它,将是有帮助的
/ select the navbar element
var navbar = document.getElementById("navbar");
// set a variable to track the previous scroll position
var prevScrollpos = window.pageYOffset;
// listen for scroll events on the window
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
// check if the user has scrolled down
if (prevScrollpos > currentScrollPos) {
navbar.style.top = "0";
} else if (currentScrollPos + window.innerHeight >= document.body.offsetHeight) {
// check if the user has reached the bottom of the page
navbar.style.top = "0";
} else {
navbar.style.top = "-50px";
}
prevScrollpos = currentScrollPos;
};
1条答案
按热度按时间kuuvgm7e1#
你提供的代码看起来很适合创建一个具有你描述的功能的导航栏。导航栏元素被选中,onscroll事件被用来跟踪用户的滚动位置,并根据该位置使导航栏可见或不可见。
我看到的主要问题是你使用navbar.style.top属性来改变导航栏的可见性,最好使用一个类来改变导航栏的可见性,这样你就可以添加CSS样式来控制过渡。
您可以创建一个类,如“navbar-invisible”,然后向navbar元素添加或删除该类以更改其可见性。
在不同的浏览器中测试此代码非常重要,因为使用JavaScript时,浏览器兼容性有时会成为一个问题。