用nodejs把目录下所有用px做单位的css文件转化为用rem做单位的css文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用nodejs把目录下所有用px做单位的css文件转化为用rem做单位的css文件相关的知识,希望对你有一定的参考价值。

20171105 1211/星期日

公司为了更好适配手机端,以前用px做单位的css文件,全部需要转化为用rem做单位,目前是1rem=37.5px;开发新项目时,还是用习惯的px写样式代码,完成UI稿的还原后,再统一转化为用rem做单位,贴上我写的nodejs 代码:

var fs = require(‘fs‘);
var path=require(‘path‘);

console.log((__dirname))
var oldContent=‘./px/‘;
var newContent=‘./rem/‘;

fs.readdir(oldContent,function(err,files){
if (err) {
throw err;
}
console.log(files);
files.forEach(function(item, index) {

fs.readFile(oldContent+item, function(err, data) {
if (err) {
return (err);
}
var ss = data.toString().split(‘;‘);
for (var i = 0; i < ss.length; i++) {
if (/[\d.]*(px)/.test(ss[i]) == true) {

var arrPx=ss[i].match(/[\d.]*(px)/g);
var remTmp=‘‘;
//此循环解决多个px同一行这个情况
for(var j=0;j<arrPx.length;j++){
var tmp=arrPx[j].replace(‘px‘, ‘‘) * 1;
var rem = (tmp / 37.5).toFixed(5) + ‘rem‘;
remTmp=ss[i].replace(/[\d.]*(px)/,rem); //不可全局替换,replace不会改变ss[i]的值
ss[i]=remTmp; //改变ss[i]
}
}
}
var resultStr=ss.join(‘;‘);
fs.writeFile(newContent+item, resultStr, function(err) {
if (err) {
return (err);
}

})
});
})

})
































以上是关于用nodejs把目录下所有用px做单位的css文件转化为用rem做单位的css文件的主要内容,如果未能解决你的问题,请参考以下文章

CSS单位px与em的区别

彻底弄懂css中单位px和em,rem的区别

移动端屏幕适配问题

CSS3中的rem,em与px间的换算关系

CSS3-边框 border

css面试题