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

如何使用jQuery实现页面滚动到指定位置时切换文本内容

滚动切换div内容失效修复方案

你的代码有3个核心硬伤,对应修复即可正常运行:

  • jQuery选择器写错:id属性选择器必须加#前缀,你写的$('image-content')是匹配名称为image-content的标签,根本选不到id为image-content的目标div,自然无法添加/移除类。
  • 未加载jQuery依赖:代码用了jQuery的$语法,但页面中没有引入jQuery库,脚本会直接报错终止运行,所有逻辑都不会执行。
  • 伪元素缺少必填属性:CSS的::before伪元素必须设置content属性才会被浏览器渲染,你默认的伪元素样式没写content,就算类加上了内容也不会显示。另外你在伪元素样式里重复写了两次position属性,属于冗余代码,直接删掉重复项即可。

修正后代码

1. HTML部分

在自定义脚本前引入jQuery,同时补全缺失的html闭合标签:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="zoom.css">
    <!-- 引入jQuery库文件,本地存储或官方CDN均可,必须放在自己编写的脚本前面 -->
    <script src="path/to/jquery.min.js"></script>
</head>
<body>
    <div class="image-container">
        <div class="zoom main">
            <img src="images/sourcecode.jpg" class="main-image">
        </div>
        <div id="content-anchor"></div>
        <div id="image-content"></div>
    </div>
    <div class="filler"></div>
    <div class="main-text"></div>
    <!-- 建议把jQuery脚本放在body末尾,确保DOM加载完成再执行 -->
    <script>
        $(window).on('scroll', function() {
            let windowTop = $(window).scrollTop();
            // 缓存目标元素,避免每次滚动都重复查询DOM
            const $content = $('#image-content');
            if (windowTop < 800) {
                $content.addClass('scrolledDown').removeClass('scrolledUp');
            } else {
                $content.addClass('scrolledUp').removeClass('scrolledDown');
            }
        })
    </script>
</body>
</html>

2. CSS部分

给默认伪元素补上content属性,删除重复的position声明:

.main {
    width: 100%;
    height: 700px;
    overflow: hidden;
    position: relative;
}

.main-image {
    width: 100%;
    position: fixed;
    left: 50%;
    transform: translate(-50%) scale(500%);
}

.filler {
    height: 400vh;
}

.main-text {
    left: -14px;
    width: 99.3vw;
    height: 4000px;
    text-align: center;
    background-color: red;
    position: relative;
}

#image-content::before {
    white-space: pre;
    /* 删除重复的position: absolute,只保留需要的fixed定位 */
    position: fixed;
    bottom: 20px;
    left: 20px;
    font-family: Impact;
    font-size: 55px;
    font-weight: 550;
    color: white;
    z-index: 4;
    opacity: 1;
    /* 必须加默认content,伪元素才会被浏览器渲染 */
    content: '';
}

#image-content.scrolledDown::before {
    opacity: 1;
    content: 'ABC';
}

#image-content.scrolledUp::before {
    opacity: 1;
    content: "DEF";
}

补充优化建议:滚动事件触发频率很高,如果要追求更好的性能,可以给滚动逻辑加节流,或者用IntersectionObserver代替scroll监听判断滚动位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:27:20