Chrome 中比 translateZ(0) 更好的解决方案来解决子像素边框图像缩放问题

2023-12-20

我遇到了边界图像切片线显示在使用 Transform:scale() 放大的元素上的问题,如下所示。这似乎只发生在 Chrome 中。

通过阅读其他帖子,这似乎是 Chrome 子像素渲染问题。我尝试过 [backface-visibility:hidden] 这似乎没有帮助。我找到的一个解决方案是将 [perspective:1px;] 应用于父元素,将 [transform:translateZ(0);] 应用于有问题的元素。虽然这确实消除了线条,但图像明显变得模糊(大概是因为它正在被重新转换)。目前使用translateZ(0) 是解决该问题的唯一(或最佳)方法吗?我正在使用普通 JS。

下面是 border-image css 的应用方式

#outer {
  height: 200px;
  width: 200px;
  border: 1px solid #333;
  transform: scale(1.22)
}

#tile {
  height: 50%;
  width: 50%;
  position: relative;
  top: 50px;
  left: 50px;
  border: 0px solid transparent;
  border-image-source: url(https://i.stack.imgur.com/Vz5jN.png);
  border-image-slice: 10 fill;
  border-image-width: 10px;
  border-image-outset: 8px 2px 2px 8px;
  box-shadow: 1px 1px 4px #666;
  filter: brightness(30%)
}
<div id="outer">
  <div id='tile'></div>
  </div

通过将边框图像转换为 .svg,我能够部分解决该问题。
这更像是一种解决方法,而不是解决方案,但它完全消除了线条并保持图像清晰。 (但是,现在我遇到了一些抗锯齿问题,其中边界线的某些部分会根据比例闪烁。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 中比 translateZ(0) 更好的解决方案来解决子像素边框图像缩放问题 的相关文章

随机推荐