为什么 CSS mask-image 不能与 no-repeat 一起使用?

wee*_*gee 6 html css image image-masking

我有一个 SVG,我想在某些事件中将其颜色更改为红色,但你不能使用 SVG 作为背景图像来做到这一点,所以你必须使用 CSS image-mask。我使用 PHP 将 CSS 回显到 div 的 style 属性上:

$jfid = "background-color:red;
        -webkit-mask-image:url(../like_icons/" . $iconfgg . ".svg);
         mask-image:url(../like_icons/" . $iconfgg . ".svg)"; 
Run Code Online (Sandbox Code Playgroud)

喜欢

$jfid = "background-color:red;
        -webkit-mask-image:url(../like_icons/" . $iconfgg . ".svg);
         mask-image:url(../like_icons/" . $iconfgg . ".svg)"; 
Run Code Online (Sandbox Code Playgroud)
.buttonlikee {
    background: transparent;
    outline: none;
    border: none;
    margin-left: 10px;
    transition: 0.8s all ease
}
.ts{
  width: 34px;
  height: 32px;
  background-color:red;
  -webkit-mask-image:url(https://svgshare.com/i/CB7.svg);
  mask-image:url(https://svgshare.com/i/CB7.svg) 
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但返回同一 SVG 的重复图像。所以解决方案是no-repeat最后添加如下:

$jfid = "background-color:red;
         -webkit-mask-image:url(../like_icons/" . $iconfgg . ".svg) no-repeat;
         mask-image:url(../like_icons/" . $iconfgg . ".svg) no-repeat"; 
Run Code Online (Sandbox Code Playgroud)

作为回报,这给了我一个充满红色的 div,你看不到像这样的图标

<button class="buttonlikee">
  <div class="ts"></div>
</button>
Run Code Online (Sandbox Code Playgroud)
$jfid = "background-color:red;
         -webkit-mask-image:url(../like_icons/" . $iconfgg . ".svg) no-repeat;
         mask-image:url(../like_icons/" . $iconfgg . ".svg) no-repeat"; 
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?解决办法是什么?

Zac*_*ier 8

no-repeat如文档mask-image中所示,这不是该属性的有效命令。相反,您应该像这样使用该属性:mask-repeat

.buttonlikee {
    background: transparent;
    outline: none;
    border: none;
    margin-left: 10px;
    transition: 0.8s all ease
}
.ts {
  width: 34px;
  height: 32px;
  background-color:red;
  -webkit-mask-image: url(https://svgshare.com/i/CB7.svg);
  mask-image: url(https://svgshare.com/i/CB7.svg);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)
<button class="buttonlikee">
  <div class="ts"></div>
</button>
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用mask属性简写:

.buttonlikee {
    background: transparent;
    outline: none;
    border: none;
    margin-left: 10px;
    transition: 0.8s all ease
}
.ts {
  width: 34px;
  height: 32px;
  background-color:red;
  -webkit-mask: url(https://svgshare.com/i/CB7.svg) no-repeat;
  mask: url(https://svgshare.com/i/CB7.svg) no-repeat;
}
Run Code Online (Sandbox Code Playgroud)
<button class="buttonlikee">
  <div class="ts"></div>
</button>
Run Code Online (Sandbox Code Playgroud)