Vue3+Vue/cli4引入vant并配置px自动换算成rem


px自动换算成rem,我看网上有很多有关的博客,花了一上午时间做了一下,整理出来两种方法(不多,但都是在我的项目中实际配置好的,以后看机会再补充)

首先分享两个查看版本号的命令(好记性不如烂笔头么):

  1、查看vue的版本号:npm list vue(我的是vue@3.0.3 )

    2、@vue/cli脚手架查看版本: vue -V(我的是@vue/cli 4.5.13)
 

px自动换算成rem,在我的项目中使用成功的有两种方法:

一、引入vant并配置

  Vant 是针对移动端的 UI 组件库,vant3.0版本开始全面拥抱Vue3,他的官方文档里面推荐了两种px自动转化为rem的插件,postcss-pxtorem 和 lib-flexible(目前已不再更新,但是可以由  amfe-flexible  代替 )

1.1 安装插件

npm install --save lib-flexible //引入lib-flexible

npm i -s  amfe-flexible //引入amfe-flexible(推荐)

npm install postcss-pxtorem --save-dev //引入postcss-pxtorem(推荐)

1.2 在main.js中引入插件

import 'amfe-flexible' //引入px自动转化rem工具

1.3 创建配置文件

在项目的根目录下(与package.json、webpack.config.js同级)创建一个postcss.config.js文件,并在文件中引入以下配置:

module.exports = {
  plugins: {
    'autoprefixer': {
      overrideBrowserslist: [
        'Android 4.1',
        'iOS 7.1',
        'Chrome > 31',
        'ff > 31',
        'ie >= 8'
      ]
    },
    'postcss-pxtorem': {
      rootValue: 37.5,
      propList: ['*'],
      selectorBlackList: ['.van-notify', ], //黑名单内的类名,将不会自动rem转换
    }
  }
}

1.4 测试

这时,第一种方法,就已经配置完了,需要写入含有px的标签进行测试,重启终端测试效果如下:


1.5 配置过程中遇见的小问题

在配置过程中遇到这样的一个问题:

       vue中安装postcss-pxtorem插件,报错“ Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.”

发现需要降低一下postcss-pxtorem版本(postcss-pxtorem版本最高才6.0),然后我降成了5.1.1

npm i postcss-pxtorem@5.1.1

二、使用lib-flexible、postcss-loader和postcss-px2rem

2.1 安装插件(如题 使用的插件有三个:lib-flexible、postcss-loader、postcss-px2rem)

npm install --save lib-flexible//引入lib-flexible

npm install --save-dev postcss-loader postcss-px2rem//引入postcss-loader和postcss-px2rem

 

2.2 在项目main.js文件引入lib-flexible

import 'lib-flexible/flexible.js'

2.3 在项目public目录下的index.html头部加入手机端适配的meta代码

<!-- 手机端适配 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,minimum=1.0,user-scalable=no">

2.4 在根目录下创建vue.config.js(我在之前已经创建过的),并配置如下信息

module.exports = {
    css: {
        //css预设器配置项
        loaderOptions: {
            css: {
              importLoaders: 1 // @import 引入的文件可被一个loader处理 (2 可被两个loader处理)
            },

            // 手机端px转化为rem
            postcss: {
              // options here will be passed to postcss-loader
              plugins: [require('postcss-px2rem')({
                remUnit: 75 //如果是750的设计图需要将remUnit替换成75 这样生成出来的比例就是1rem=100px
              })]
            }
        }
    }
}

2.5 测试(跟第一种方法的测试过程一样,不做赘述)

tips:据借鉴的大大说:与原来的vue-cli 2.x版本不同的是:如果使用最新版本的@vue/cli初始化vue项目时,通常看不到webpack的配制文件。而在原来的2.x版本,我们可以在utils.js中轻松配制px2rem相关配置。为了解决这个问题,我研究了一下vue-cli的官方文档,发现我们仍然可以像以往那样配制。在Vue-cli2.x、Vue-cli3.x、Vue-cli4(我的是4.5.4)中,应该都可以使用,这就有点强了喂。

注意(摘自原文):当你遇到1px的边框时,通常容易发现页面缺失部分边框,这时你可以使用/*no*/语法来屏蔽该属性转换,例如:

border: 1px solid red; /*no*/

由于字体的特殊性,我们在编译font-size属性时,通常不使用rem单位,这时候你可以这样使用:

font-size: 24px; /*px*/ 

借鉴的原文链接(来自于各位大大):

vue cli4引入vant并配置自动rem换算 postcss-pxtorem和lib-flexibl + 黑名单:https://www.mulingyuer.com/archives/377/

vue vue-cli @vue/cli将px转换成rem单位配置(flexible,px2rem):https://blog.csdn.net/weixin_41424247/article/details/80867351

vue中安装postcss-pxtorem插件,报错“ Error: PostCSS plugin postcss-pxtorem requires PostCSS 8.”:https://www.cnblogs.com/liangziaha/p/14492288.html

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM