如何为背景图像添加颜色叠加?

Ale*_*lex 48 css background-image background-color

我在SO和Web上都看到了很多这个问题.但它们都不是我想要的.

如何仅使用CSS为背景图像添加颜色叠加?

示例HTML:

<div class="testclass">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS示例:

.testclass {
    background-image: url("../img/img.jpg");
}
Run Code Online (Sandbox Code Playgroud)

请注意:

  • 我想通过仅使用CSS来解决这个问题.即我不想在div"testclass"中为颜色叠加添加一个子div.

  • 这不应该是一个"悬停效果",我只想简单地在背景图像上添加一个颜色过度.

  • 我希望能够使用不透明度,即我正在寻找一种允许RGBA颜色的解决方案.

  • 我正在寻找一种颜色,让我们说黑色.不是渐变.

这可能吗?(如果没有,我会感到惊讶,但我还没有找到任何关于此的内容),如果是这样,最好的方法是什么呢?

所有的建议和意见都表示赞赏!

G-C*_*Cyr 119

我看到2个简单的选择:

  • 多个背景与图像上的半透明单梯度
  • 蜷缩插入阴影

渐变选项:

html {
  min-height:100%;
  background:linear-gradient(0deg,rgba(255,0,150,0.3),rgba(255,0,150,0.3)),url(http://lorempixel.com/800/600/nature/2);
  background-size:cover;
  }
Run Code Online (Sandbox Code Playgroud)
  
Run Code Online (Sandbox Code Playgroud)

阴影选项:

html {
  min-height:100%;
  background:url(http://lorempixel.com/800/600/nature/2);
  background-size:cover;
  box-shadow:inset 0 0 0 2000px rgba(255,0,150,0.3);
  }
Run Code Online (Sandbox Code Playgroud)

我的旧编码器,只有很少的例子

  • `box-shadow: inset 0 0 0 50vw rgba(255,0,150,0.3);` 是一个不错的选项,应该始终覆盖屏幕。 (6认同)
  • ```box-shadow: inset 0 0 0 50vw rgba(255,0,150,0.3)``` 是这个问题最好、最简单的答案。 (2认同)

Sti*_*ers 25

您可以使用伪元素来创建叠加层.

.testclass {
  background-image: url("../img/img.jpg");
  position: relative;
}
.testclass:before {
  content: "";
  position: absolute;
  left: 0; right: 0;
  top: 0; bottom: 0;
  background: rgba(0,0,0,.5);
}
Run Code Online (Sandbox Code Playgroud)


Uzi*_*Uzi 13

background-image 采用多个值.

所以只需1种颜色线性渐变的组合即可css blend modes.

.testclass {
    background-image: url("../images/image.jpg"), linear-gradient(rgba(0,0,0,0.5),rgba(0,0,0,0.5));
    background-blend-mode: overlay;
}
Run Code Online (Sandbox Code Playgroud)

请注意,IE/Edge上根本不支持CSS混合模式.

  • 最好提一下浏览器支持表 - http://caniuse.com/#feat=css-backgroundblendmode (2认同)

Uda*_*ara 6

试试这个,简单明了。我从这里找到它:https : //css-tricks.com/tinted-images-multiple-backgrounds/

.tinted-image {

  width: 300px;
  height: 200px;

  background: 
    /* top, transparent red */ 
    linear-gradient(
      rgba(255, 0, 0, 0.45), 
      rgba(255, 0, 0, 0.45)
    ),
    /* bottom, image */
    url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
}
Run Code Online (Sandbox Code Playgroud)