如何在不影响文本的情况下在背景图像上使用不透明度?

时间:2014-09-29 07:55:24

标签: css background opacity

我正在尝试在背景图像上使用不透明度但如果我使用它会影响文本。

.content_wrapper{
width:320px;
height:374px;
color:black;
background-image: url('../images/beuningse-boys-midden.png');
background-size:130px;
background-repeat: no-repeat;
background-position-x: 95px;
background-position-y: 155px;

}

2 个答案:

答案 0 :(得分:1)

您无法使用CSS更改background-image的不透明度。但是,有一些方法可以达到同样的效果。

Method 1

此方法使用:after伪类,它绝对位于其父级内。背景图像在此伪元素上设置,并且不透明度给人的印象是背景不透明度是在背景本身上设置的。

HTML

<div>
  Text on top, no big deal, no big deal. Just a little text and stuff. That's all.
</div>

CSS

div {
  width:320px;
  height:374px;
  display: block;
  position: relative;
  border: solid 1px #f00;
}

div::after {
  content: "";
  background-image: url('http://placehold.it/800x600');
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0.5;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  position: absolute;
  z-index: -1;   
}


Method 2

如果您需要向后兼容性,则需要在标记中添加额外元素才能获得相同的结果:

HTML

<div class="container">
    <div class="background"></div>
    Text on top, no big deal, no big deal. Just a little text and stuff. That's all.
</div>

CSS

.container {
  width:320px;
  height:374px;
  display: block;
  position: relative;
  border: solid 1px #f00;
}

.container .background {
  content: "";
  background-image: url('http://placehold.it/800x600');
  background-size: cover;
  background-repeat: no-repeat;
  opacity: 0.5;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  position: absolute;
  z-index: -1;   
}

这是一篇很棒的文章,其中CSS3方法可以实现相同的结果:

http://css-tricks.com/snippets/css/transparent-background-images/

答案 1 :(得分:0)

给文本一个类或一个id,并给它一个没有不透明度的颜色。

p {
    color: rgb(120,120,120); // use here what color you want
}