CSS覆盖图像背景

时间:2016-11-21 19:21:55

标签: css overlay

我想在我的图像背景上叠加一个叠加层,以便更清晰地看到图像上方的白色文字。

为什么this solution不起作用?

HTML:

character(0)

CSS:

<div id="myDiv" class="bg1 image-cover">
  <p>H</p>
</div>

this one确实:

HTML:

#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');
}

CSS:

<div id="myDiv" class="bg1">
  <div class="image-cover">
    <p>H</p>
  </div>
</div>

我认为我误解了... .image-cover { content:'\A'; position: absolute; width:100%; height:100%; top:0; left:0; background:rgba(0,0,0,0.9); opacity: 1; } ... 的工作方式,但我不喜欢第二种解决方案,因为它比第一种方法多一个div。

2 个答案:

答案 0 :(得分:3)

我很高兴您已经意识到第二种解决方案;这往往是我通常使用的方法(虽然不是出于任何特殊原因)。您可以按如下方式修改原始方法并获得所需效果:

#myDiv > p {
  position: relative;
}

即,为嵌套的<p>标记提供非static位置值。见这里:CodePen

答案 1 :(得分:0)

您可以像这样增加要覆盖在图像上的文本的 z-index

#myDiv{
    z-index: 1;
}

#myDiv p{
    z-index: 2; /* should be more than the z-index of the background */
}