package.json的browserslist带来的样式突发变化

538 阅读2分钟

最近对系统做了一些大的改动,发布提测后,测试反馈:在Electron客户端(基于Chrome44)里部分菜单的组件样式变得很奇怪,比如勾选框勾上后没有效果,系统导航侧边栏的下拉框文字颜色变了(本来应该是黑色,但现在变成蓝色了)。但是在Chrome浏览器(最新版内核)则无此问题。

接到反馈后,我感觉这2个问题应该是同一个问题,只要解决了一个,另外一个也就迎刃而解了。

于是,我拿最容易复现的系统导航侧边栏来做分析,经审查元素发现以下现象。先看看截图:

这是在新版Chrome浏览器的审查效果:

11.png

12.png

而这是Electron客户端(基于Chrome44)的审查效果:

1.png

2.png

经过比对color样式发现,问题就出现在:.i-menuItemLink的样式上,源代码写法是:color: rgba(0, 0, 0, 0.65);

但现在线上的写法被转译成了:color: #000000a6 这个是新浏览器才支持的写法,所以难怪在旧客户端这个属性出现了黄色的叹号,而无法应用该样式了。

找到问题根因后,现在要找解决办法。

思路一:初始怀疑是因为npm版本的问题,下载到SASS或者LESS的高版本而导致其编译的默认配置改了,所以引发了这个问题。但经过jenkins编译平台脚本比对以及package.json的代码比对发现,最近并没有发生npm的插件变动,并且npm版本也是用yarn工具锁住的。所以此思路不通。

image.png

思路二:也是由于思路一的调查,发现最后的那一行变动 browserslist 字段,由开始的chrome 44改为了 chrome 117。突然想到,就是这里的原因。经过本地编译后确认,这个指定为新chrome的版本确实影响了CSS的样式配置。我们来看AI是怎么介绍和解释这个 browserslist 字段的:

browserslist 是一个配置文件,用于定义项目的目标浏览器和设备。它可以帮助你更好地了解项目需要支持哪些浏览器和设备,从而更好地优化代码以提高兼容性。

最终,通过重新把 browserslist 改回 chrome 44 解决此问题。

这个问题,也再次提醒了我,一定要继续学习,继续扩大技术知识面!扩大认知,才能事半功倍!