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

为何设置background-attachment:fixed的背景图未在透明div区域显示

问题解答

核心原因

你对background-attachment: fixed的作用存在误解:这个属性仅决定当前元素的背景图的定位基准是视口,但背景图的可见范围始终受限于当前元素本身的盒模型区域,只有元素在文档流中占据的位置,才会渲染它的背景。

你当前的布局里,#background是页面第一个元素,高度仅为100vh,它在文档流里仅占据页面顶部0~100vh的区域。当你向下滚动页面,超过100vh的区域(包括#transparent-area所在的位置)根本不属于#background的渲染范围,哪怕它的背景图是相对于视口固定的,也不会在元素本身的区域外显示。

修复方案

方案1:将背景设置在页面根元素上

直接把背景属性加到body或html标签上,根元素默认占据整个页面的高度,所有透明区域都会透出固定背景:

body {
  margin: 0;
  background-image: url("https://images.unsplash.com/photo-1612225330812-01a9c6b355ec?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2670&q=80");
  background-size: cover;
  background-attachment: fixed;
  background-repeat: no-repeat;
}
/* 可以删掉原#background的样式和对应的HTML元素 */

方案2:将#background设为全局固定层

给#background添加固定定位,让它脱离文档流,覆盖整个视口并置于最底层:

#background {
  position: fixed;
  top: 0;
  left: 0;
  z-index: -1; /* 放在所有内容下方 */
  width: 100vw;
  height: 100vh;
  background-image: url("https://images.unsplash.com/photo-1612225330812-01a9c6b355ec?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2670&q=80");
  background-size: cover;
  background-repeat: no-repeat;
  /* 不需要再加background-attachment: fixed了,因为元素本身已经固定 */
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:00