今天做公司官网 需要针对不同pc屏幕做适配 想了半天觉得使用rem布局最美观 而且最好是使用flexable.js的最方便 不过这个 方案没有官方pc端的插件 需要使用原有移动端flexable.js进行改造:
具体如下:
1、首先安装flexable.js插件
npm i lib-flexible -S
2、安装自动将px转rem的插件:
npm i px2rem-loader -D
2.安装好了之后全局引入包,在main.js中添加如下代码
import 'lib-flexible'
3.在vue.config.js中添加如下代码(如果没有这个文件的话手动创建一个)
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-px2rem')({
remUnit: 192
})
]
}
},
},
值得注意的是remUnit,这个是填你们的设计稿的大小除以除以10
4.修改lib-flexible.js,
为什么要改,你会发现一个问题,移动端没问题,但是pc端他的大小只适配到540,
所以在安装包里node_modules中的lib-flexible.js文件,
其中修改如下代码
没改之前
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = 540 * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
修改之后
function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 540) {
width = width * dpr;
}
var rem = width / 10;
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}
就是把540的宽度改成,当前屏幕的宽度
5.改完之后最重要的来了! 需要将项目停掉 然后重新跑一边 因为涉及到包和依赖的东西都是要重新build才有效
重新跑一遍后自己手动将浏览器窗口进行拉伸 就可以看到效果了