1. 程式人生 > >Vue-cli 將px轉化為rem,適配移動端(vue-cli2.x 和 vue-cli3中的使用)

Vue-cli 將px轉化為rem,適配移動端(vue-cli2.x 和 vue-cli3中的使用)

一. Vue-cli2.x中的用法

1.下載lib-flexible

我使用的是vue-cli+webpack,所以是通過npm來安裝的

npm i lib-flexible --save

2.引入lib-flexible

在main.js中引入lib-flexible

import 'lib-flexible/flexible'

3.設定meta標籤

通過meta標籤,設定裝置寬度以及縮放比例

<meta name="viewport" content="width=device-width, initial-scale=1.0">

4.安裝px2rem-loader

npm install px2rem-loader --save-dev

5.配置px2rem-loader

這裡是重要的一步~~

在build檔案中找到util.js,將px2rem-loader新增到cssLoaders中,如:

複製程式碼

const cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV === 'production',
      sourceMap: options.sourceMap
    }
  }
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 75
    }
  }

複製程式碼

同時,在generateLoaders方法中新增px2remLoader

複製程式碼

function generateLoaders (loader, loaderOptions) {
    const loaders = [cssLoader,px2remLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

複製程式碼

6.重啟,一切ok~

當配置完之後,只需要重啟下服務,就自動轉化為rem了

npm run dev

二. Vue-cli3  中的用法 

關於移動端的適配,我喜歡用px2rem配合lib-flexible,非常方便,vue-cli3.0後,專案配置被大大精簡了,這使得原來配置px2rem的檔案不復存在,但其實只要掌握了正確的姿勢,配置方法比原來更簡單~

lib-flexible

作用:讓網頁根據裝置dpr和寬度,利用viewporthtml根元素的font-size配合rem來適配不同尺寸的移動端裝置 
安裝:yarn add lib-flexible 
引入:入口檔案main.js中:import 'lib-flexible/flexible.js'

pxtorem

作用:將專案中css的px轉成rem單位,免去計算煩惱 
安裝:yarn add postcss-pxtorem 
配置:package.json內,在postcss內新增:

"postcss": {
    "plugins": {
      "autoprefixer": {},
      "postcss-pxtorem": {
        "rootValue": 75 // 設計稿寬度的1/10,
        "propList":['*'],// 需要做轉化處理的屬性,如`hight`、`width`、`margin`等,`*`表示全部
     }
    }
  },

TIPS

1、pxtorem中,對於想忽略的px寫成大寫即可,諸如 border:1PX solid #fff; 
2、也可以選擇postcss-px2rem,我更喜歡pxtorem的忽略方式,方便我vscode的beautify自動格式化程式碼 
3、postcss-pxtorem 與 px2rem-loader的更多比較見:postcss自學筆記(二)