如何使用 CSS 使图像变暗?

Pra*_*bhu 3 html css

我有一张横跨整个屏幕的图像:

<div>
  <img className="background-image" src={url} /> 

  <h1>{name}</h1>
  ... 

</div>


 .background-image {
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
 }
Run Code Online (Sandbox Code Playgroud)

现在,我想让整个图像变暗。我怎样才能做到这一点?我尝试在图像旁边添加一个具有黑色背景和全宽和全高的 div,但这会弄乱一切。我想做的就是使图像变暗,以便可以轻松阅读页面上的文本。

Mic*_*ker 5

filter物业会这样做,但并未得到广泛支持。我会使用一个伪元素,绝对定位在带有背景的图像上rgba(),或者将纯色背景与opacity.

div {
  position: relative;
  display: inline-block;
}
div:before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: black;
}
img {
  vertical-align: top;
  opacity: .5;
  position: relative;
}
Run Code Online (Sandbox Code Playgroud)
<div><img src="http://kenwheeler.github.io/slick/img/fonz1.png"></div>
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但我宁愿使用 `:before` 并设置图像的不透明度。为什么?因为在这种情况下,图像仍然在前面,并且您仍然可以在其上获得潜在的“标题”,或者右键单击时获得正确的上下文菜单。 (2认同)
  • @Capsule 很好,之前没有考虑过这一点。我喜欢。更新。 (2认同)