我正在使用CSS的transform:scale
来放大一些元素,现在原先为1px solid black
的边框因为它们现在是1.4px
左右的,所以会有一些亚像素渲染 - "抗锯齿"。它看起来在所有现代浏览器上都有点模糊,但具体如何取决于浏览器。
我能为某些元素禁用亚像素渲染吗?
我正在使用CSS的transform:scale
来放大一些元素,现在原先为1px solid black
的边框因为它们现在是1.4px
左右的,所以会有一些亚像素渲染 - "抗锯齿"。它看起来在所有现代浏览器上都有点模糊,但具体如何取决于浏览器。
我能为某些元素禁用亚像素渲染吗?
transform: scale(ratio)
进行缩小时遇到了类似的问题,但是在子像素渲染中边框会完全消失而不是模糊。container.style.transform = "scale(" + ratio + ")";
elementWithBorder.style.border = Math.ceil(1 / ratio) + "px solid lightgray";
设置 perspective
属性似乎就可以解决问题:
.subpixel-modal {
transform: translate(-50%, -50%);
perspective: 1px;
}
由于标准显示器的72 dpi无法呈现分数像素大小,所以它会变得模糊,我相信您已经理解了。此外,在规范中没有任何内容可以影响边框的渲染或抗锯齿。
像素宽度为2可能会给您带来更好的结果,但几乎所有东西都会变得模糊。
一些视网膜设备和显示器确实支持亚像素边框宽度,但是在跨浏览器支持方面并没有一致的解决方案。
在我的测试中,我发现从角落缩放比默认情况下从中心缩放效果更好。以及逐步增加四分之一或半个像素。
transform: scale(1.25);
transform-origin: left top;