最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 使用Chrome和vsCode实现rem to rem伪脚本

    正文概述 掘金(Maschera96)   2021-08-18   464

    问题

    因为项目的变化,rem的尺寸发生了变动,从原来的 1rem = 55.2px 变为了 1rem = 0.5px,所以涉及到的三个css页面的rem都要替换,本来以为是个小问题,打算用vsCode的正则查找直接替换,但是发现vsCode不支持 运算后 替换。

    于是打算借用插件的帮助,不过能找到的只有px2rem或px2rpx,并没有rem2rem,不过我这个需求却是很小众,思考了一下,感觉可以先把rem全部换成px,然后用px2rem插件转化,不过这有两个问题,一是该插件只能一个一个替换,不能一键全部替换,二是该插件的配置项中 1rem 对应的 px 数值必须为整数,我还不能先填个整数事后再除10或100,因为我需要填的数字为 1/110.4,是个无限小数,遂放弃使用插件。

    插件这条路走不通,看着1000+行的scss文件我又头大,怎么办,总不能手动替换吧,于是我的思路开始往脚本的方向上靠。

    解决方法

    使用Chrome和vsCode实现rem to rem伪脚本 核心思路是用正则,如图所示,把我需要改动的scss文件复制到Chrome的调试器上,将其转化为模板字符串的形式并使用replace()进行 查找 -> 计算 -> 替换。

    这里有个重点,replace()方法的第二个参数选择传入一个函数,这样才能实现计算后替换,因为我们乘了一个小数,所以不要忘了对乘积只取两位小数。代码如下:

    ``.replace(/\s(-?\d*?\.?\d*?)rem/g, function($1){
        let a = /\s(-?\d*?\.?\d*?)rem/g.exec($1)
        return ' ' + (a[1]*110.4).toFixed(2) + 'rem'
    })
    

    使用Chrome和vsCode实现rem to rem伪脚本

    按下回车后,如图所示,让我惊讶的是Chrome居然针对大文件做了处理,这个一键复制可太甜了,不过美中不足的是文件被全部压成了一行,换行变成了\n,不过这都是小问题,丢到vsCode去一键替换。

    使用Chrome和vsCode实现rem to rem伪脚本 使用Chrome和vsCode实现rem to rem伪脚本

    删去首尾的引号和多余的转义字符 \ ,搞定!

    之后的操作就简单了,复制,回车,复制,回车,轻轻松松就搞完了 rem to rem 的转换。

    除了Chrome,本人还试了一下safari,执行的结果没有被压成一行,不过相比Chrome少了一键复制,只能说各有优缺点。

    这次解决方案的探索让我对浏览器的调试器大开眼界,不知道能说些什么赞美之词,只能说一句:雀石好用!


    下载网 » 使用Chrome和vsCode实现rem to rem伪脚本

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元