transform与字体模糊的问题
在开发FreeNG的scroll组件时,遇到了一个奇怪的问题,那就是当
transform
为translate(0, -20.222px)
(为小数)时,字体会变得模糊,当时的解决方案是将参数值改为整数,问题就解决了。趁着有时间,搞了一个例子,本来以为很容易重现问题,可是直接设置
transform: translate(0, -20.222px)
,发现问题无法重现。实例:
仔细对比了一下两者的代码,发现唯一的不同之处在于scroll容器中的DOM(Angular组件嵌套)很多,但是往例子中的div塞了n多个DOM,发现字体还是依旧清晰,只能求助万能的Google,发现有一个说法,就是渲染复杂的内容时才会出现字体模糊,所以将例子修改了一下,在div中使用
Charts
图表,问题果然出现了。实例:
问题出现的情况:
1. 当
translate()/scale()/matrix()
使用小数,要渲染的内容很复杂时2. 当渲染的内容很复杂,使用
rotate()
时注:这里还有一个容易忽略的情况,就是当你使用百分比时,而计算出来的值是小数时,也会出现这种情况,其实也就是第一种情况:使用小数。
解决方案:
1. 将小数转换为整数
第二种情况还未找到解决方案
如果你发现更多情况或有更好的解决方法,欢迎在下方的评论区留言告知!