postcss-pxtorem是将px转化为rem的一个插件css
rem单位是根据根节点字体大小 => 设置根节点大小 => 动态改变rem大小webpack
Step1:实现rem布局web
Const baseSize = 32 // 基准大小 Function setRem () { const scale = documentElement.clientWidth / 750 //当前页面宽度相对于750宽的缩放比例 // 设置根节点字体大小 document.documentElement.style.fontSize = ( baseSize * Math.min(scale,2)) + ‘px’ } setRem(); // 初始化 window.onresize = function() { setRem(); // 改变窗口时从新设置rem }
Step2:数组
Main.js中引入文件后,能够查看根节点,查看是否有被自动添加font-size布局
Note:完成这一步实际上就是实现了rem布局,实际开发的时候,仍是须要咱们去计算对应的rem值去开发post
Step3:配置webpack,自动转化px对应的rem值字体
配置好之后,就能够在项目中只用px开发了,例如:this
Body { width: 750px; height: 1136px; }
将自动转化为remspa
实际应用中插件
function transferRem() { /* this is the foundation of the rem layout */ const docEl = document.documentElement; const resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; const recalc = function () { const { clientWidth } = docEl; if (clientWidth === undefined) return; if (clientWidth > 414) { docEl.style.fontSize = `${100 * (clientWidth / 1920)}px`; // docEl.style.fontSize = '20px'; window.rootRate = clientWidth / 1920; return; } docEl.style.fontSize = `${20 * (clientWidth / 375)}px`; }; recalc(); window.addEventListener(resizeEvt, recalc, false); document.addEventListener('DOMContentLoaded', recalc, false); };
wenpack配置
rootValue为75,就是对根节点大小进行设置
unitPrecision为5,就是转换成rem后保留的小数点位数
propList是一个存储哪些将被转换的属性列表,假设须要仅对边框进行设置,能够写['*','!border*'],意思是排除带border的属性
selectorBlackList则是一个对css选择器进行过滤的数组,好比设置为['fs'],那么例如fs-xl类型,里面有关px的样式将不被转化,这里也支持正则
mixPixelValue的意思是,设置了12,就是全部小于12px的样式都不被转化,那么border就自动保留px值啦