vue-cli3.0 flexible&px2rem 解决第三方ui组件库样式问题

背景

在项目使用lib-flexible还有postcss-px2rem实现移动端适配,当咱们引入第三方的样式组件库,发现一个问题。那些组件库的样式都变小了。css

 

问题缘由vue

变小的主要缘由是第三库 css一依据 data-dpr="1" 时写的尺寸node

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

这时咱们使用的flexible引入时 data-dpr不是一个写死了的,是一个动态的;就致使这个问题npm

 

解决方式json

postcss.config.js中过滤node_modulessegmentfault

 

具体实现步骤:浏览器

 

第一部分:项目中引入lib-flexiblepost

 

1、项目中安装lib-flexibleflex

npm install lib-flexible --save

 

2、在项目的入口main.js文件中引入lib-flexibleui

import 'lib-flexible'

 

第二部分:使用postcss-px2rem自动将css中的px转换成rem

 

1、安装postcss-px2rem 

npm install postcss-px2rem --save-dev

 

2、项目配置postcss

项目开始在vue.config.js(项目建立完初始是没有这个js文件的,须要本身手动建立)中配置的,上代码

复制代码
module.exports = {
    css: {
        loaderOptions: {
          postcss: {
            // 这是rem适配的配置  注意: remUnit在这里要根据lib-flexible的规则来配制,若是您的设计稿是750px的,用75就刚恰好。
             plugins: [
              require("postcss-px2rem")({
                remUnit: 75
          })
        ]
      }
    }
}
复制代码

初始的适配方案就完成了,而后能够直接在css或.vue文件中写已px为单位的样式了,到浏览器会自动转为rem。

but but 引入vant的组件库后,问题来了。

试着放了一个简单的cell组件,npm run serve项目跑起来,组件中的样式都变小了,F12看了一下果真组件的样式也都被转换成了rem。

 

解决方案一:

将第三方组件的css文件复制出来第三方库的css代码px统一扩大2倍,或者用全局替换将px替换为px/*no*/。这个方案不太好,具体操做能够参考如下两篇文章:https://segmentfault.com/a/1190000014575890 和 https://blog.csdn.net/weixin_42464312/article/details/82769805。

 

解决方案二:

使用postcss-px2rem-exclude
 
首先,须要卸载项目中的postcss-px2rem。
npm  uninstall postcss-px2rem --save-dev

其次,安装postcss-px2rem-exclude

npm  install postcss-px2rem-exclude --save

 

后是配置exclude选项,须要注意的是这个配置在vue.config.js中式不起做用的,如图。

 

正确的配置位置是项目根目录下的postcss.config.js文件,若是你的项目没有生成这个独立文件,就须要在你的package.js里设置。

复制代码
postcss.config.js

module.exports = {
  plugins: {
    autoprefixer: {},
    "postcss-px2rem-exclude": {
      remUnit: 75,
      exclude: /node_modules|folder_name/i
    }
  }
};
复制代码
复制代码
package.json

"postcss": {
    "plugins": {
      "autoprefixer": {},
      "postcss-px2rem-exclude":{
          "remUnit": 75,
          "exclude":"/node_modules|floder_name/i"
      }
    }
  },
复制代码

本篇文字就到这里了,动手试试~

相关文章
相关标签/搜索