【问题标题】:How to ignore transparent pixels with background blend mode如何使用背景混合模式忽略透明像素
【发布时间】:2018-06-01 15:19:16
【问题描述】:

看到这个JSFiddle

.goblin {
  background-image: url("https://gameartpartners.com/wp-content/uploads/edd/2015/06/goblin_featured.png");
  width: 600px;
  height: 500px;
  background-color: red;
  background-blend-mode: normal;
}

.goblin:hover {
  background-blend-mode: multiply;
}

请注意,当您将鼠标悬停在图像上时,它会正确地将红色调应用到地精。但是,我只希望红色应用于地精,而不是他周围的透明像素。有没有办法用 CSS 做到这一点?

这是一个密切相关的stackoverflow post。我无法使用此解决方案,因为此解决方案中使用的图像非常基本,并且只有一种颜色。 -webkit-mask-box-image 不适用于更复杂的示例。

编辑:这是我想要的图片:https://imgur.com/a/j3xt86B

【问题讨论】:

  • 为什么不在 img 元素上使用简单的过滤器?有什么理由让你必须坚持使用混合模式?
  • 我真的不清楚你想在这里实现什么?你有预期结果的例子吗?
  • “他周围的透明像素”是什么意思?
  • 预期的结果正是 jsfiddle 中的内容,除了地精周围不应该有红色背景。
  • 我更新了 jsfiddle,希望能更清楚地了解发生了什么

标签: css css-filters background-blend-mode


【解决方案1】:

您可以使用mask-image CSS property。它是实验性的,但得到了很好的支持。

这里我使用了相同的图像作为蒙版和背景:

.goblin {
  background-image: url("https://gameartpartners.com/wp-content/uploads/edd/2015/06/goblin_featured.png");
  width: 600px;
  height: 500px;
  -webkit-mask-image: url("https://gameartpartners.com/wp-content/uploads/edd/2015/06/goblin_featured.png");
  -webkit-mask-mode: alpha;
  mask-image: url("https://gameartpartners.com/wp-content/uploads/edd/2015/06/goblin_featured.png");
  mask-mode: alpha;
}

.goblin:hover {
  background-blend-mode: multiply;
  background-color: red;
}
<div class="goblin"></div>

【讨论】:

  • 今天早些时候,我在玩 webkit 掩码图像,但无法让它工作。您的解决方案正是我想要的,谢谢!
  • 从今天开始,您似乎应该将 -webkit-mask-image 替换为 -webkit-mask-box-image,不确定 mask-image 属性
猜你喜欢
  • 2010-12-16
  • 2021-03-05
  • 2015-07-03
  • 2014-10-25
  • 2010-11-27
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多