博客 / 詳情

返回

vue-cli4創建vantUI項目,按需引入,適配Rem,自定義主題

使用vue-cli4創建一個vue項目

//vue-cli@4.2.3
vue create vant-demo

根據自己的需要選擇對應的配置,此處略過。。。
PS:因為vantUI使用的是less預處理器,配置時建議選擇此處理器。

安裝vantUI,按需引入

安裝vantUI

npm i vant -S

按需引入

babel-plugin-import是一款 babel 插件,它會在編譯過程中將 import 的寫法自動轉換為按需引入的方式

npm i babel-plugin-import -D

通過vue-cli4創建項目的時候,由於內部集成了babel,在項目的根目錄有babel.config.js文件,在此文件添加配置。

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [
    ['import', {
      libraryName: 'vant',
      libraryDirectory: 'es',
      style: true
    }, 'vant']
  ]
}

image.png

main.js引入vantUI組件

因為每個組件都需要使用Vue.use()註冊,可以直接使用Array遍歷,因為使用了babel-plugin-import插件,按需引入的方式,所以可以不需要寫每個組件的style。

import {Button,RadioGroup, Radio} from 'vant'

[Button,RadioGroup,Radio].forEach(e=>{
  Vue.use(e)
})

image.png

在項目中及直接用對應的組件即可

image.png

效果:

image.png

適配Rem

Vant 中的樣式默認使用px作為單位,移動端使用Rem會更好,官方文檔推薦使用一下兩個工具:

  • postcss-pxtorem是一款 postcss 插件,用於將單位轉化為 rem
  • lib-flexible用於設置 rem 基準值

分別安裝

npm install postcss-pxtorem -D

npm i amfe-flexible

安裝好後,在main.js引入amfe-flexible

import  'amfe-flexible/index.js'

image.png

如果項目根目錄有postcss.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: ['*']
      }
    }
}

image.png

PS:375px 即100%寬度,寫px會自動rem處理,如果不想被rem處理,可以使用PX來寫。

測試一下:

image.png

顯示

image.png

自定義主題

Vant 使用了Less對樣式進行預處理,並內置了一些樣式變量,通過替換樣式變量即可定製你自己需要的主題。

下面是一些基本的樣式變量,所有可用的顏色變量請參考配置文件。

// Component Colors  
@text-color:  #323233; 
@border-color:  #ebedf0;
@active-color:  #f2f3f5; 
@background-color:  #f7f8fa; 
@background-color-light:  #fafafa;

按需引入時,自定義主題

更改babel.config.js文件,由於上面步驟引入了,這裏稍微更改點就行

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [
    ['import', {
      libraryName: 'vant',
      libraryDirectory: 'es',
      // style: true
      style: name => `${name}/style/less`
    }, 'vant']
  ]
}

image.png

根目錄創建vue.config.js文件,內容如下:

module.exports = {
    css: {
        loaderOptions: {
            less: {
                modifyVars: {
                    'radio-checked-icon-color': '#f20000',
                }
            }
        }
    }
};

所有可用的顏色變量請參考配置文件

image.png

重啓項目

npm run serve

image.png

還可以單獨引入一個像是文件,配置主題顏色
新建一個theme.less文件
內容如下:

@radio-checked-icon-color:#00f228;

image.png

修改vue.config.js文件
image.png

重啓項目

npm run serve

image.png

全部引入和單獨引入style時,自定義主題

引入樣式時,要把css改成less

// 引入全部樣式  import  'vant/lib/index.less'; 
// 引入單個組件樣式  import  'vant/lib/button/style/less';
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.