You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将jQuery的$(document).scrollTop()转换为原生JS实现导航栏淡入

核心实现解答

你要替换的$(document).scrollTop()滚动距离获取逻辑,原生JS直接使用window.scrollY即可,这是现代浏览器通用的获取文档纵向滚动像素值的全局属性,无需额外依赖。
如果需要兼容IE等老旧浏览器,可以使用兼容写法:

const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

原JS代码问题修正

你当前的JS代码存在重复绑定滚动事件的问题:在滚动事件回调中又新增了滚动事件监听,会导致函数被重复触发,造成严重性能损耗。另外绑定事件时直接写fireHeader()会立刻执行函数,无法实现滚动时触发的效果,需要传入函数引用。

修正后的完整JS代码

// DOM查询提前到全局执行,避免每次滚动都重复查询DOM,提升性能
const navBarFade = document.querySelector(".child-container-bg");
const brkPoint  = 400;
const fadeLength = 300;

const fireHeader = function (noAnimate) {
    // 原生JS替换jQuery滚动距离获取的核心代码
    const scrollTop  = window.scrollY;
    let opacity;
    if (scrollTop < brkPoint) {
        opacity = 0;
    } else if (scrollTop > brkPoint + fadeLength) {
        opacity = 1;
    } else {
        opacity = noAnimate ? 1 : (scrollTop - brkPoint) / fadeLength;
    }
    navBarFade.style.opacity = opacity;
};

// 页面加载完成先执行一次,避免刷新后滚动位置对应导航栏透明度异常
fireHeader(true);
// 绑定滚动事件,直接传入函数引用即可
window.addEventListener('scroll', fireHeader);

内容的提问来源于stack exchange,提问作者Antonio Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:39:01