element弹窗表格的字体模糊bug解决
作者:砂糖橘加盐 发布时间:2024-04-18 10:53:25
背景
有一个BUG,就是在使用element弹窗表格的字体异常的模糊。如下图:
这个问题其实已经存在很久了。客户屡有反馈,但是不多。我们基本自测也没有重现过,而且改问题并不影响流程。所以就一直挂着未解决。
直到领导的电脑也出现了这个问题,作为一向是面向领导开发的我,这个问题是必须要解决了。
问题分析
猜测是字体的问题,但是弹窗并没有单独使用额外的字体,别的地方都没有出现,而且字体也不是你想要改就能改的,有统一的规范。排除。
鉴于我公司给予员工的电脑太垃圾,并且浏览器还很占性能,所以猜测,是浏览器在渲染DOM的时候出了问题。不予解决,提升电脑配置去。但是测试那边是提升过的电脑,依旧出现这个问题。逐排除。
其实不管是由什么引起的,必然都是浏览器渲染的问题,这是一句正确的废话。
既然是使用element的弹窗和表格引起的,所以这个是否是element自身的问题。然后在谷歌搜索框中,在element的issue中,寻找可能的问题,一无所获。暂时排除。
或许是样式的问题?一开始就看过这部分的样式,相当的简单和常见:
.#{namespace}-wrap {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
面试必考题。在我从事web前端两年开发中,用了无数遍,从来没有问题。带着transform
和字体模糊的关键字到搜索框中。居然真的发现了问题的答案。
产生的原因
收集了一下网上的情况,总结如下:
当表格的数据量大的时候,并且出现了滚动条
当我们在使用"transform" 中的"translate()" 或者"scale()" 之后,并且在经过计算后的值不是整数。
不过到也不是一定会出现这样的问题,所以是充分非必要的条件。也就是说,当出现了字体模糊的时候,它的值是这样的情况。
给予dom的背景图添加一个旋转角度"transofrm: rotate(30deg)," 会导致背景图上面的字体模糊。
像我们公司这样的垃圾屏幕。瞎眼的1080P
chromium内核的浏览器和Safari具有一样的问题,火狐浏览器没有听说,用的人少?
和谷歌浏览器的版本有关系么?
可以说没有关系。在我手机资料的过程中,发现从45版本的Chrome到105版本的Chorme的出现这个问题。
也就是说,这么多年谷歌一直的没有解决这个问题
所以产生这样的根本原因是什么呢?
由于浏览器将图层拆分到 GPU 以进行 3D 转换,而非整数的像素偏移,使得 Chrome 在字体渲染的时候,不是那么的精确。
就算是中文我也不懂
So this issue is still around since 2014 at least! please do something?
By the way, the blur is cause by subpixel values not being rendered by the display, because its density its not compatible and such thing as half a pixel does not exists?
This effect can be also seen on this issue (when using css animations/transitions like translations 50%)
英文的,更看不懂了。就知道在吐槽
解决的办法
不就是为了垂直居中嘛?我有一百种方法来实现,不用你这个"transform" 。
用"flex"、用"margin: 0 auto;" 、用"display: box;" 、用"display: table"
验证可行。
保证弹窗的高宽为偶数。这样"transform的translate(-50%, -50%)" 也是是偶数。
可以用JS来进行判断,弹窗宽高为奇数的时候,手动给它们加1。
添加"-webkit-transform: rotate(45deg)translate3d(0, 0, 0)" 改变chrome的渲染模式,可以改善。
似乎可行。由于字体模糊现象在自己的电脑实在无法必须,所以没有办法判断是不是这个属性起的作用。
隐藏滚动条。
这个我没有尝试,感觉有点傻。
叫用户换浏览器,火狐浏览器我全网搜索都没有说有这个问题。
更换高清显示器。
这真是一次有趣的解BUG之旅啊!
来源:https://juejin.cn/post/7202623084275925051


猜你喜欢
- asp学习入门经验介绍,本文初步介绍了初学asp的一些相关知识,如VBScript语法简介,循环控制语句的使用,asp数据库的简单操作查询,
- 前言我使用goland开发,下面都是用goland做演示一、生成demo.a新建一个项目,目录如下demo.gopackage demoim
- 1.安装MySql目前MySQL有两种形式的文件,一个是msi格式,一个是zip格式的。msi格式的直接点击setup.exe就好,按照步骤
- Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么。在讲is和==这两种运算符区别之前,首先要知道Py
- 描述安装python库有时会遇到安装失败的情况。这让我很难受,下面是一种解决办法供大家参考,我们可以换一种方法安装,比如从官网下载来安装。下
- 前言CRUD代表: 增加(create) ,查询(retrieve) ,更新(update) ,删除(delete) 单词首字母。一、新增数
- 这些编码,早些时候在一些应用软件中经常看到,估计很多朋友也看到了,这些编码了!从这个图,我们可以看到这类编码应用很广泛,那么我们一起看看,i
- 下面的表格中列出了已经学习过的数据类型,也是python的核心数据类型之一部分,这些都被称之为内置对象。对象,就是你面对的所有东西都是对象,
- 一、系统环境yum update升级以后的系统版本为[root@yl-web yl]# cat /etc/redhat-release Ce
- 本文实例讲述了Node.js文本提交与显示方法。分享给大家供大家参考,具体如下:index.jsvar server = require(&
- 先贴出完整代码. <script type="text/javascript"> function Stri
- 基于bootstrap插件实现autocomplete自动完成表单,提供脚本代码,用例,以及后台服务端(php), 原文有些没说清楚的地方,
- 数据类型是一种值的集合以及定义在这种值上的一组操作。一切语言的基础都是数据结构,所以打好基础对于后面的学习会有百利而无一害的作用。pytho
- #!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotInteg
- return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回程序运行到所遇到的第一个return即返回(退出def块),不会再运行
- 这篇文章不谈大道理,只谈细节。关于facebook的大道理,大家可以去海内网的帖子《谁去救救麦田老师吧》讨论。那里有很多IT评论高手,谈的很
- 一般你在迭代一组数据的时候,需要创建一个数据,假设数组很大,则会消耗很大性能,甚至造成内存不足。//Fatal error: Allowed
- 今天为大家介绍使用 mitmproxy 这个抓包工具如何监控手机上网,并且通过抓包,把我们想要的数据下载下来。启动 mitmproxy首先我
- 本文实例讲述了Python 日志logging模块用法。分享给大家供大家参考,具体如下:demo.py(日志,输出到控制台):import
- Microsoft SQL Server 2008通过与Microsoft Office的深度集成,为所有人提供了可用的商业智能,以合适的价