HTML和CSS只能创建一个自动忽略图像上透明区域的叠加层吗?

ggr*_*grr 22 html css

例如,它有一个透明背景的图像:

在此输入图像描述

我想在其上添加一个灰色叠加层(例如,div或画布......):

在此输入图像描述

但我希望叠加层自动忽略图像上的透明区域:

在此输入图像描述

纯HTML和CSS(例如div,canvas ......)可以这样做吗?

Car*_*ele 22

尝试叠加混合模式.或者倍增!(IE或Edge不支持,感谢@Stilltorik)

.multiplied {
  background-color: blue;
  width:250px;
  height: 100px;
  margin-top: -100px;
  mix-blend-mode: overlay;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <img src='https://i.stack.imgur.com/4yUEW.png'/>
  <div class='multiplied'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 但是要小心,IE或Edge不支持:http://caniuse.com/#feat=css-mixblendmode (9认同)
  • 非常接近,但遗憾的是,没有一种可用的混合模式可以精确地再现所需的结果.它还高度依赖于图像和图像出现的背景.这一点是否重要取决于提问者,尽管很明显其他18位用户要么没有注意到也不关心,从上面的无效"+1"评论来看. (3认同)