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

使用position: fixed的<div>却不禁用页面滚动的问题(CSS)

解决噪点遮罩导致页面滚动失效的问题

问题出在你的fixed定位噪点层默认会拦截所有鼠标/触摸交互事件,导致页面底层内容无法接收滚动指令。fixed元素的层级高于普通流内容,且默认pointer-events: auto,会阻断下层元素的事件触发。

修复方案

给.noise类添加pointer-events: none属性,让噪点层不捕获任何交互事件,事件会直接穿透到下层页面内容:

.noise {
  position: fixed;
  top: -50%;
  left: -50%;
  right: -50%;
  bottom: -50%;
  width: 200%;
  height: 200vh;
  background: transparent url('../img/noise.png') repeat 0 0;
  animation: bg-animation .2s infinite;
  opacity: .5;
  pointer-events: none; /* 关键修复代码 */
} 

@keyframes bg-animation {
  0% { transform: translate(0,0) }
  10% { transform: translate(-5%,-5%) }
  20% { transform: translate(-10%,5%) }
  30% { transform: translate(5%,-10%) }
  40% { transform: translate(-5%,15%) }
  50% { transform: translate(-10%,5%) }
  60% { transform: translate(15%,0) }
  70% { transform: translate(0,10%) }
  80% { transform: translate(-15%,0) }
  90% { transform: translate(10%,5%) }
  100% { transform: translate(5%,0) }
}

原理说明

pointer-events: none会让元素完全忽略鼠标、触摸等交互行为,所有点击、滚动操作都会直接穿过该元素作用到下层内容上,同时不会影响噪点动画的视觉效果。

如果后续页面中有需要交互的fixed元素(比如弹窗),只需给这些元素设置更高的z-index值,且不添加pointer-events: none,就能保证弹窗正常交互,噪点层的视觉效果也不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:50:26