javascript - 比 translateZ(0) 更好的解决方案来解决 Chrome 中的亚像素边框图像缩放问题
问题描述
我在使用 transform: scale() 放大的元素上显示边框图像切片线时遇到问题,如下所示。这似乎只发生在 Chrome 中。
阅读其他帖子,这似乎是 Chrome 亚像素渲染问题。我试过 [backface-visibility: hidden] 似乎没有帮助。我确实找到的一个解决方案是将 [perspective:1px;] 应用于父元素,并将 [transform: translateZ(0);] 应用于相关元素。虽然这确实消除了线条,但图像变得明显模糊(可能是因为它正在重新转换)。目前使用 translateZ(0) 是解决问题的唯一(或最佳)方法吗?我正在使用香草 JS。
下面是边框图像 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 来部分解决该问题。
这更像是一种变通方法而不是解决方案,但它完全消除了线条并保持图像清晰。(但是,现在我体验到我认为是一些抗锯齿问题,其中边界线的某些部分会根据比例闪烁进出。)
推荐阅读
- mysql - WHEN 条件在 JOIN 查询中如何工作?
- java - Java:如何将 Arrays.copyOfRange() 与泛型类型一起使用?
- c++ - 为什么 std::when_any 使用 std::tuple 而不是 std::vector 作为其结果类型?
- java - GetSharedPreferences get session id
- c# - 枚举模型绑定 [FromRoute] 的行为与 .net 核心中的 [FromBody] 不同
- javascript - 使用 node_modules 实现 Typed.js 时遇到问题
- php - session_start(); 警告?
- java - 运行测试时出现 InaccessibleObjectException
- laravel - 403 Forbidden on Storage Directory
- django - Vue 代码未在我的 Django/Vue 项目中更新