chrome128更新zoom导致组件缩放问题
前几天,一个项目里的好好的大屏页面,下拉菜单 直接偏移很远…远….
chrome128版本更新zoom变化
分析问题
突然出现的样式问题,让人捉摸不透,逐一分析原因:
代码被更改,布局乱了?
因为下拉菜单的弹出层是需要写定位的,查看代码发现,并没有变更;相关布局代码也没有修改.
依赖升级,组件库更新了?
查看package.json/package-lock.json 并无修改
大屏zoom缩放导致?
将缩放的相关js代码屏蔽,下拉恢复正常
google更新导致?
测试反馈,他的火狐浏览正常,谷歌浏览器出现偏移问题。那看来问题还是出现在浏览器上。通过比对发现,
chorme128
版本及以上出现这个问题;谷歌官方更新日志查看,发现128版本确实更新了
标准化 CSS zoom 属性
,那么“罪魁祸首”就找到了ant-design-vue 组件库没有兼容?
- 由于我使用的是
ant-design-vue 3
版本,猜想更高版本是否已经解决了这个问题。经过测试ant-design-vue 4
也有此问题;ant-design-react 5
版本却并无问题,猜想是做了兼容处理或者采用新的定位逻辑; - 综上,应该就是zoom变化导致的定位出现问题,除了下拉菜单,其他需要弹出定位的组件有此问题吗?有的有的,全部都乱了,整个晋察冀都乱了。
- 接下来就得去找找同路人,哎,github上 相关issue已经有了,就喜欢这种IT人爱问爱学习的氛围(抄答案);
- 由于我使用的是
解决问题
下面是解决方案,参考了网上大佬们的方案,再结合自己的实际情况优化了一下:
1 | //zoomPlugin.js |
需要注意的是:因为是直接重写的Element的getBoundingClientRect方法,所以只要运行了就会一直有效了,不能再重复执行,否则会导致元素获取定位信息(x,y等)再次偏移;所以,我直接在 mani.js 里面执行的此方法,页面刷新才再次执行,不会重复执行。
1 | //针对大屏下的元素zoom偏移问题 |
总结一下
由于之前 css:zoom是非标准化属性,组件库方面就没有做太多兼容处理,导致在弹出层定位问题上,出现偏差。这次chrome128版本更新,估计好多前端大屏项目都受到了影响;最后,咱们前端开发还是得多多关注谷歌浏览器的更新日志才行额!!!
chrome128更新zoom导致组件缩放问题
1.docker部署jenkins
2.云服务器上前端自动化部署一条龙
3.服务器docker安装nginx
4.hexo设置永久链接地址为数字编号
5.自动部署hexo博客
6.服务器上安装jenkins