You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Safari中-webkit-mask-box-image显示4组遮罩图的问题求助

Safari中-webkit-mask-box-image重复显示4组遮罩的解决方案

问题背景

在应用中使用-webkit-mask-box-image实现图标遮罩时,仅在Safari浏览器中出现遮罩图像重复显示4组的异常,Chrome浏览器表现正常。相关代码如下:

.fhr {
  --fhr-icon-size: 20px;
  &-shopping-bag {
    -webkit-mask-box-image: url("/icons/shopping-bag.svg");
  }
  background: var(--layout-color);
  height: var(--fhr-icon-size);
  width: var(--fhr-icon-size);
}

问题表现为遮罩图像在容器内以2x2网格形式重复显示4次。

问题原因

-webkit-mask-box-image是WebKit早期的私有属性,设计初衷是实现9宫格切片式的遮罩填充,如今已被标准CSS mask属性废弃。近期Safari对该旧属性的渲染逻辑进行了调整,导致原本预期的单张遮罩图像被强制分割重复填充。

修复方案

改用标准CSS遮罩属性替代废弃的私有属性,确保跨浏览器兼容性:

.fhr {
  --fhr-icon-size: 20px;
  &-shopping-bag {
    // 标准属性 + WebKit前缀兼容Safari
    mask-image: url("/icons/shopping-bag.svg");
    -webkit-mask-image: url("/icons/shopping-bag.svg");
    // 强制遮罩图像适配容器尺寸
    mask-size: 100% 100%;
    -webkit-mask-size: 100% 100%;
    // 禁止图像重复
    mask-repeat: no-repeat;
    -webkit-mask-repeat: no-repeat;
  }
  background: var(--layout-color);
  height: var(--fhr-icon-size);
  width: var(--fhr-icon-size);
}

额外建议

  • 若SVG图标存在缩放异常,检查SVG文件的viewBox属性是否正确设置,例如viewBox="0 0 24 24"(根据图标实际尺寸调整)
  • 对于Safari 15.4及以上版本,可仅使用标准mask属性,无需添加-webkit-前缀

内容的提问来源于stack exchange,提问作者Julian Sanchez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:45:15