【vue---pc端自适应】使用lib-flexible和postcss-pxtorem实现pc端适应不同分辨率

前言

一个努力学习的小菜鸡一枚,通过记录的方式巩固一下浅薄的记忆力~ 如果有遇到同样的问题希望也可以帮助到大家~

开始叭~

使用的是vue-cli5+vue2

安装

安装lib-flexible 和 postcss-pxtorem

npm install lib-flexible --save
npm install postcss-pxtorem --save
配置lib-flexible

因为lib-flexible会根据屏幕生成相对的meta标签,所以我们在index.html文件中删除meta标签(如果使用的是amfe-flexible则不需要删除)
在这里插入图片描述

因为本需求需要适应的是pc端,而lib-flexible本身是为了方便移动端,所以需要修改部分代码。
我们可以在node_modules中找到lib-flexible文件夹下的flexible.js文件
在这里插入图片描述
找到其中的refreshRem方法
在这里插入图片描述
修改为:

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;
    }

由于项目是多人开发,为了方便不用每个人都修改,我把lib-flexible文件夹复制出来放到了src文件夹下面,并在main.js中引入(如果直接在node_modules修改就正常引入就可以)
在这里插入图片描述

main.js 文件

import './lib/lib-flexible'   //复制出来放在src文件夹下
//import 'lib-flexible'    //直接在node_modules中修改
配置postcss-pxtorem

我最开始用的是postcss-px2rem,结果狂报错!rem计算不准确,配置报错等各种问题!!!

css.loaderOptions

向 CSS 相关的 loader 传递选项,在这里配置postcss,具体请移至官网

参考:Vue Cli #css.loaderOptions

vue.config.js

css: {
    loaderOptions: {
      postcss: {
        postcssOptions:{
          plugins: [
            // 把px单位换算成rem单位
            require("postcss-pxtorem")({
              rootValue: 192, // 换算的基数 375的设计稿,换算基数就是37.5 ,本项目是1920,则192
              propList: ["*"], //可以从px更改为rem的属性。
              // selectorBlackList: [".el"],// 要忽略的选择器并保留为px。
              minPixelValue: 2 // 设置要替换的最小像素值。
            })
          ]
        }
      },
    }
  },
参数说明(其他没用到属性未作说明)

1.rootValue(Number | Function)表示根元素字体大小或根据input参数返回根元素字体大小。
2.propList (Array)可以从px更改为rem的属性。
—使用[“*”]表示匹配所有
3.selectorBlackList (Array)要忽略的选择器,保留为px。
4.minPixelValue (Number) 设置要替换的最小像素值。

注意

忽略单个属性的最简单方法是在像素单位声明中使用大写字母,将px写为Px。

结果查看

可以看到根节点变成了192px,下面的px的都计算出来了!然后试试个个分辨率样子就完成啦!
在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值