You need to enable JavaScript to run this app. 预加载屏如何单独隐藏y轴滚动条且不影响全站滚动?
优惠活动
大模型
产品
解决方案
定价
更多

预加载屏如何单独隐藏y轴滚动条且不影响全站滚动?

预加载屏右侧多余滚动条的解决方案

问题核心

你之前在#preloader上添加overflow-y: hidden没有生效,本质是你看到的右侧滚动条根本不是预加载容器生成的:
#preloader是固定定位、铺满整个视口的元素,自身内容没有溢出的话,内部不会生成任何滚动条。你在截图里看到的贴在视口最右侧的滚动条,是页面加载初期,根元素(<html>/<body>)因为临时的内容高度差触发的全局滚动条——这个滚动条和preloader容器是平级的,你在preloader的样式上设置再多overflow规则,也管不到根元素的滚动行为。
直接给全局*选择器加overflow-y: hidden的方案不可行,是因为这个规则会把页面所有元素的内部滚动能力全部废掉,后续需要滚动的长列表、弹窗组件都会直接失效,完全不符合需求。

正确配置方法

不需要改动原有全局样式,只要在预加载展示的时间段,临时锁住页面根元素的滚动状态,等预加载淡出完成后再解锁,就能实现“仅预加载阶段隐藏y轴滚动条、不影响后续站点正常滚动”的效果:

  • 补充CSS规则:在现有样式表中新增类选择器规则,不要修改原有全局*选择器的内容:
    /* 仅预加载激活状态下,隐藏body的y轴滚动条 */
    body.preloader-active {
      overflow-y: hidden;
    }
    
  • 修改预加载的JavaScript逻辑:在原有的jQuery代码基础上,增加状态切换的逻辑:
    $(window).on('DOMContentLoaded', function() {
      const $preloader = $('#preloader');
      if ($preloader.length) {
        // 预加载展示阶段立刻给body加锁定类,从源头消除右侧滚动条
        $('body').addClass('preloader-active');
        // 预加载淡出动画完全结束后,解除滚动锁定,恢复页面正常滚动
        $preloader.delay(2000).fadeOut('slow', function() {
          $('body').removeClass('preloader-active');
        });
      }
    });
    

原有代码的可保留配置

你现在给#preloader设置的overflow: hidden配置是正确的,这个规则会隐藏preloader容器内部可能出现的滚动条,不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 18:15:03