【避坑指“难”】scrollTop滚动条兼容各浏览器

所有主流浏览器都支持 pageXOffsetpageYOffset 属性。

IE 8 及 更早 IE 版本不支持该属性,但可以使用 document.documentElement.scrollLeftdocument.documentElement.scrollTop 属性。

let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
let oldTop = 0;

useEffect(() => {
    
    
		if (haveScrollEvent !== false)
			window.addEventListener("scroll", scroll);
	}, [])
	
	useEffect(() => {
    
    
		return () => {
    
    
			if (haveScrollEvent !== false)
				window.removeEventListener("scroll", scroll);
		}
	}, [])

const scroll = e => {
    
    
		let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
		if (scrollTop >= 420 && oldTop < 420) {
    
    
			setBgColor('#202124');
		} else if (scrollTop < 420) {
    
    
			let state = {
    
    };
			if (oldTop >= 420)
				state = {
    
    
					bgColor: 'rgba(32,33,36,' + scrollTop / 420 + ')',
				};
			else
				state = {
    
    
					bgColor: 'rgba(32,33,36,' + scrollTop / 420 + ')',
				};
			setBgColor(state.bgColor);
		}
		oldTop = scrollTop;
	};
	

猜你喜欢

转载自blog.csdn.net/weixin_42224055/article/details/117590706