首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS背景-混合模式与不透明度相乘

CSS背景-混合模式与不透明度相乘
EN

Stack Overflow用户
提问于 2018-01-19 06:19:18
回答 1查看 3.9K关注 0票数 0

我正在将一个基于UI的游戏从Unity移植到Cordova。在Unity中,我使用各种颜色对以白色为主的图像进行着色,以重用资源。粗略的CSS等价物似乎使用了设置为multiply的主要标准background-blend-mode属性,并在背景中使用所需的色调颜色作为bg颜色。

代码语言:javascript
复制
.tinted {
  background-image: url('theimg.png');
  background-size: 100% 100%;
  background-color: #0f0;
  background-blend-mode: multiply;
}

问题是它不能保持图像的不透明度,也就是说透明部分变成了浅色。该规范说明了一些自上而下的混合,所以我认为它可能与bg颜色的混合有关,但如果我在图像顶部分层纯色(作为渐变),它也不起作用。

代码语言:javascript
复制
.tinted2 {
  background-image: url('theimg.png'), linear-gradient(to bottom, #0f0, #0f0);
  background-size: 100% 100%;
  background-blend-mode: multiply;
}

颠倒背景图像的顺序或将混合模式更改为normal, multiplymultiply, normal也不起作用。对于如何正确使用CSS,有什么建议吗?

编辑:正如答案中提到的,alpha方面可以使用掩码属性来实现。我结合使用了这两种技术来获得我需要的东西:

代码语言:javascript
复制
.tintedMasked {
  background-image: url('theimg.png');
  background-size: 100% 100%;
  mask-image: url('theimg.png');
  mask-size: 100% 100%;
  background-color: #0f0;
  background-blend-mode: multiply;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 06:36:22

如果我正确理解你想要做什么,那么背景混合不是方法,而是遮罩。

代码语言:javascript
复制
div {
    height: 200px;
    background-image:linear-gradient(SlateBlue, Tomato);
  -webkit-mask: url(https://cdn.pixabay.com/photo/2016/12/28/19/37/denied-1936877_960_720.png) top left no-repeat / contain;
  mask: url(https://cdn.pixabay.com/photo/2016/12/28/19/37/denied-1936877_960_720.png) top left no-repeat / contain;
}
}
代码语言:javascript
复制
<div></div>
<h1>No stairway??</h1>

这是假设你的蒙版图像是alpha透明的PNGs。您也可以通过设置mask-mode: luminance;来使用亮度蒙版

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48331238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档