gpt4 book ai didi

javascript - 有没有办法在没有jquery的情况下检测窗口的位置

转载 作者:行者123 更新时间:2023-11-28 13:24:08 25 4
gpt4 key购买 nike

这就是我想要做的,我在页面顶部有一个粘性导航,背景是透明的。但是当用户向下滚动并且内容位于导航下方时,我想更改导航的背景以使其不透明。现在我已经实现了这一点,但我的问题是:当用户滚动回页面顶部时,导航背景是否有可能再次变得透明?

例如:用户加载页面,导航透明,用户向下滚动,导航背景变为非透明,然后用户滚动回到页面顶部。是否可以使导航背景再次透明?我也试图在不使用 jquery 的情况下实现这一目标!所以请只用原始 javascript 回答!

___JS___
window.onscroll = function nav_bg(){
var header = document.getElementById("header");
header.setAttribute('style','background-color:rgba(0,0,0,1);')
}


___CSS___
#header{background-color:rgba(0,0,0,.4);}

这是我当前的代码,但是当用户滚动回到顶部时,背景保持不透明。

最佳答案

jQuery 是这样做的:

var doc = document.documentElement, body = document.body;
var left = (doc && doc.scrollLeft || body && body.scrollLeft || 0);
var top = (doc && doc.scrollTop || body && body.scrollTop || 0);

一旦你知道窗口滚动到哪里,你只需要绑定(bind)到“scroll”事件(如果没有 jQuery,绑定(bind)会有点棘手,因为旧的浏览器有不同的处理事件绑定(bind)的方法)

var addEvent = (function( window, document ) {
if ( document.addEventListener ) {
return function( elem, type, cb ) {
if ( (elem && !elem.length) || elem === window ) {
elem.addEventListener(type, cb, false );
}
else if ( elem && elem.length ) {
var len = elem.length;
for ( var i = 0; i < len; i++ ) {
addEvent( elem[i], type, cb );
}
}
};
}
else if ( document.attachEvent ) {
return function ( elem, type, cb ) {
if ( (elem && !elem.length) || elem === window ) {
elem.attachEvent( 'on' + type, function() { return cb.call(elem, window.event) } );
}
else if ( elem.length ) {
var len = elem.length;
for ( var i = 0; i < len; i++ ) {
addEvent( elem[i], type, cb );
}
}
};
}
})( this, document );
// Example Usage
addEvent( window, 'scroll', function() {
//Test scroll position and set style
});

(取自this page)

关于javascript - 有没有办法在没有jquery的情况下检测窗口的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589722/

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