此方法依赖于lib-flexible,直接替换其中的字符串就可以了
transformHtmlStr(str) {
let vm = this;
const ZPXRegExp = /(\d+)px/;
let pxGlobalRegExp = new RegExp(ZPXRegExp.source, 'ig')
if (pxGlobalRegExp.test(str)) {
// px转换vw,核心部分
let dataDpr = document.documentElement.getAttribute("data-dpr");
let rootSize = parseFloat(document.documentElement.style.fontSize) ;
let $_source = str.replace(pxGlobalRegExp, vm.createPxReplace(dataDpr,rootSize))
// 转换之后替换回source中,返回函数值
return str.replace(str, $_source)
} else {
//没有就不转,直接返回
return source
}
},
createPxReplace (dataDpr,rootSize) {
return function ($0, $1) {
if (!$1) return
var pixels = parseFloat($1)
return (pixels*dataDpr/rootSize).toFixed(2)+'rem';
}
},