postcss px转不转rem呢?

1、用postcss时,有时候你的px不转rem;你希望他转;
如: elementui的labelWidth配置了数值但是不转
原因:行内元素都不转
解决方法:放到vue的style元素中就行啦

2、有的你不希望他转
解决方法:
方法1:px单位改为大写 PX
方法2:这行css后注释上 /* no */
why? 我看了下postcss的源码;大体就是先把这个css字符串转为css的AST【css.parse】;然后根据AST条件来选择性转换为rem;
看下这个转换函数,拿到astrule;循环每行css rule;先看你有没有小写px;不符合就不转;在看你有没有注释 no,有就containe不转

方法3:我的建议是一劳永逸的方法;但是会影响node_modules;这样后续就只能用我的node_modules了;【想要别人也能行,打个patch包就行,patch包打法在另一篇文章有写】
css.parse前,match一下关键字,不转就是了;

方法4:
看你的这个功能怎么配置的:
如果是postcss.config.js里面配置的,可以配置对应的blacklist或exclude
如果是通过vue.config.js里面的chainWebpack, 也可以在options内传入上面这些参数
如果你是直接引入的require("postcss-px2rem")函数,那就不能通过配置了,只能用上面三个方法了

posted @ 2023-08-18 16:35  Math点PI  阅读(532)  评论(0)    收藏  举报