美文网首页
gulp打包修复 高版本谷歌浏览器不兼容deep选择器bug

gulp打包修复 高版本谷歌浏览器不兼容deep选择器bug

作者: sunny_wen | 来源:发表于2022-08-03 14:38 被阅读0次

谷歌浏览器在89+的版本之后不再识别deep(深度选择器)。由于无法确保用户使用的浏览器版本是多少,只能通过代码做到兼容所有的谷歌浏览器。考虑到89以下的浏览器人需要deep选择器才能访问到scope作用于内的样式,需要保留原来的deep选择器定义的样式。为了兼容89+的谷歌浏览器则需要将deep选择器去除以避免无法识别造成的样式错乱。

css解决方案:

如果页面中涉及到的deep选择器比较少,那么直接找到css样式文件一处处修改即可。但针对大范围的css文件都涉及到deep选择器的兼容,显然这样的方式就不适用了。 

项目通过gulp打包压缩css文件后,所有的css都会集中到一个文件中,如果此时再处理deep选择器的问题,那就回省力很多。因此想到通过扩展gulp打包css文件的功能来统一处理deep兼容性问题。

gulp打包后的css文件

gulpfile.js文件:

在gulp文件中引入自己编写的工具deepFixTool,用于在css压缩后遍历所有的css样式,当检测到deep选择器时,记录下来用于后面复制。

deepFIxTools,js源码

首先通过正则表达式"/(?<=}).{0,300}?\/deep\/.*?}/g"去压缩后的css文件中全局匹配包含深度选择器的css语句,注意使用正则表达式匹配的话,由于每个css语句长度都不一致,所以会有匹配内容溢出情况(除了包含deep选择器的css语句还有别的会被包含)。因此需要将正则匹配到的内容在做一次过滤,过滤掉多余的不包含deep的css语句。

正则匹配效果

在过滤掉不想要的内容之后,将得项目中所有包含deep选择器的css语句,此时只要将每个语句中的deep选择器替换为空字符串,并贴到css文件的最后即可。

相关文章

  • gulp打包修复 高版本谷歌浏览器不兼容deep选择器bug

    谷歌浏览器在89+的版本之后不再识别deep(深度选择器)。由于无法确保用户使用的浏览器版本是多少,只能通过代码做...

  • gulp运行报错gulpInst.start.apply(gul

    原因多种,一般是gulp cli 和gulp版本不兼容或根本没装gulp cli。 查看版本: 不兼容不是因为版本...

  • 浏览器兼容问题

    IE不兼容,低版本也需要处理比如vue3使用globalThis对象,导致71版本一下谷歌浏览器无法兼容,此时可以...

  • 修复 IntelliJ IDEA 中 Cucumber 6.8.

    我估计这是 Cucumber 插件和 Cucumber 旧版本的版本兼容 Bug,不知道官方什么时候做兼容性修复,...

  • git tag

    版本命名规则:a.b.ca:大版本升级 与上一个版本不兼容b:a版本下增加功能向下可兼容c:b版本下修复bug 当...

  • vue对于各大ui组件样式覆盖的方法

    一、深度作用选择器(>>>) 二、/deep/预处理器less下使用(与>>>作用相同) 然而最近谷歌浏览器对于/...

  • iOS设备运行位数

    在调试bug中会有遇到静态库打包不兼容的问题 ==================================...

  • Android热修复及原理总结和介绍

    热修复的产生原因 刚发布的版本出现了bug,需要修复bug、测试并打包在各大应用市场重新发布上架。这样会耗费大量的...

  • 北京棋院PC项目总结

    该项目要求兼容方面:火狐,谷歌,opera等主流浏览器之外,需要兼容iE8以及以上的iE版本 屏幕需要兼容小屏幕,...

  • Effective-用Pythonic方式来思考

    确定所用的Python版本Python2与3代码是不兼容的。目前Python2的功能开发已经停止,只会修复bug,...

网友评论

      本文标题:gulp打包修复 高版本谷歌浏览器不兼容deep选择器bug

      本文链接:https://www.haomeiwen.com/subject/pljjwrtx.html