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

子div遮罩异常问题:如何实现父元素50%宽100%高的overlay?

解决你的遮罩宽度/高度不生效问题

嘿,我来帮你排查下代码里的问题,你要的是文本后方出现宽度为.parent一半的白色遮罩,现在的代码有几个明显的小错误:

1. 重复的width属性直接覆盖了你的设置

看你的.overlay样式:

.overlay { 
  width: 50%; 
  position: absolute; 
  top: 0; 
  left: 0; 
  width: 100%; /* 这里把上面的50%直接覆盖了! */
  background-color: rgba(255, 255, 255, 0.8); 
}

后面写的width:100%会完全覆盖前面的width:50%,这是第一个要改的地方。

2. 定位参考对象错了,高度也没设置

  • 你给.child加了position:relative,所以.overlay是相对于.child定位的,但你要的是相对于.parent的50%宽度,这就不对了。
  • 另外,.parent的高度是靠padding:100px 0撑开的,.child的height:100%在父元素高度为auto的情况下根本不生效,而.overlay又没设置height,所以它默认高度是0,自然看不到。

修正后的完整代码

我调整了代码,完美实现你要的效果:

HTML(和你原来的一样,不用改)

<div class="parent"> 
  <div class="child"> 
    <div class="overlay"></div> 
    <h1>Title</h1> 
  </div> 
</div>

CSS

.parent { 
  padding: 100px 0; 
  background: black; 
  position: relative; /* 把定位参考改成parent */
}
.child { 
  width: 100%; 
  padding: 0 50px; 
  position: relative; 
  z-index: 1; /* 确保文本在遮罩上面 */
}
.child h1{ 
  color: red; 
}
.overlay { 
  width: 50%; 
  height: 100%; /* 填满parent的高度 */
  position: absolute; 
  top: 0; 
  left: 0; 
  background-color: rgba(255, 255, 255, 0.8); 
}

关键调整说明

  • 给.parent加上position:relative,这样.overlay就会相对于.parent定位,width:50%就是你要的父元素一半宽度。
  • 给.overlay设置height:100%,因为它是绝对定位,会自动匹配.parent的高度(包括padding撑开的部分)。
  • 给.child加z-index:1,防止遮罩把文本盖住,确保标题能正常显示在遮罩上方。
  • 删掉了.child里无效的height:100%,以及.overlay里重复的width:100%。

这样改完之后,就能看到你想要的白色半透明遮罩啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:03:28