使用CSS使图像变暗(任何形状)

Jos*_*iah 42 css png tint

所以我已经看到了很多用CSS来改变图像的方法,包括带圆角的图像,但我的问题不同了.

假设我有一个看起来像小狗的.png图像(只是用它,我没有任何好的例子),当我把它放在我的页面上时,我给它的尺寸为100 x 100.

但是我不能只在它上面覆盖一些东西,或者整个图像着色,因为它会使狗的背景也被染色,看起来很难看.

是否可以使用CSS为任意形状的图像着色?

(我假设你理解我的观点,没有必要使用无用的代码)

谢谢!

The*_* Oz 130

容易

img {
  filter: brightness(50%);
}
Run Code Online (Sandbox Code Playgroud)

  • 当然这应该是公认的答案.这是最简单的适用于所有背景的. (11认同)
  • 这在Microsoft浏览器中不起作用 (2认同)
  • 它似乎适用于Edge,但不适用于IE. (2认同)
  • 这是要走的路,如果不是太担心旧IE (2认同)
  • 注意:如果这会使您的图像看起来太暗,则可能需要同时增加饱和度,例如`filter:Brightness(75%)saturate(140%);` (2认同)
  • 谢谢你!这真太了不起了! (2认同)

Sea*_*ean 27

您可以随时更改图像的不透明度,考虑到任何替代方案的难度,这可能是最佳方法.

CSS:

.tinted { opacity: 0.8; }
Run Code Online (Sandbox Code Playgroud)

如果您对更好的浏览器兼容性感兴趣,我建议您阅读:

http://css-tricks.com/css-transparency-settings-for-all-broswers/

如果你足够坚定,你可以让它早在IE7上工作(谁知道!)

注意:正如JGonzalezD在下面指出的那样,如果背景颜色通常比图像本身更暗,这实际上只会使图像变暗.虽然如果您不想特别想要使图像变暗,但是想要在悬停/聚焦/其他状态下突出显示它,这种技术可能仍然有用.

  • 还使用带有`background:black;`的div包装图像 (10认同)
  • 这不会使图像比它更暗(不透明度:1;)它实际上是闪电. (4认同)
  • 如果图像显示在深色背景上,则似乎具有使图像变暗的效果(因为更多的深色背景将显示出来)。您可以在此处查看示例:https://jsfiddle.net/mvhfxrm1/顶部图像的颜色为#CCCCCC,而底部图像的颜色为#676767 (2认同)

小智 14

如果你只想background-image影响 ,你可以使用线性渐变来做到这一点,就像这样:

  background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5)), url(IMAGE_URL);
Run Code Online (Sandbox Code Playgroud)

如果你想让它更暗,把 alpha 值调高,否则你想让它更亮,把 alpha 调低

  • 谢谢,因为这使我可以使 <main> 元素的图像变暗,而不会使页面内容变暗。最佳答案! (2认同)