【发布时间】:2016-11-21 19:21:55
【问题描述】:
我想在我的图像背景上叠加一层,以便更清楚地看到图像上方的白色文本。
为什么this solution 不起作用?
HTML:
<div id="myDiv" class="bg1 image-cover">
<p>H</p>
</div>
CSS:
#myDiv {
width: 300px;
height: 300px;
color: #fff;
position: relative;
font-size: 100px;
font-weight: bold;
}
.image-cover:before {
content:'\A';
position: absolute;
width:100%;
height:100%;
top:0;
left:0;
background:rgba(0,0,0,0.9);
opacity: 1;
}
.bg1 {
background-size: cover;
background: url('https://2zpt4dwruy922flhqyznip50-wpengine.netdna-ssl.com/wp-content/uploads/2014/12/lock-and-stock-photos.jpg');
}
而this one 这样做:
HTML:
<div id="myDiv" class="bg1">
<div class="image-cover">
<p>H</p>
</div>
</div>
CSS:
...
.image-cover {
content:'\A';
position: absolute;
width:100%;
height:100%;
top:0;
left:0;
background:rgba(0,0,0,0.9);
opacity: 1;
}
...
我想我误解了:before 的工作方式,但我不喜欢第二种解决方案,因为它比第一种解决方案多一个 div。
【问题讨论】:
-
你可以看到这个[这里][1]stackoverflow.com/questions/28121731/…
-
我看过这个解决方案,但它似乎需要
z-index两个元素来创建堆叠上下文。由于:before元素出现在元素“之前”,我希望它堆叠在文本上方或下方。但由于它定位为绝对,它应该出现在文本后面。 -
@randomDownvoter 为什么?这是一个诚实的问题,并且可能非常令人困惑。 + 1.