Vant主題定制如何修改顏色樣式
Vant主題定制修改顏色
使用場景
需要修改vant組件的顏色或其他的樣式時,可以用以下方法進(jìn)行自定義修改。

一個簡單的效果:

第一種:完全替換主題色或其他樣式
用Vant官方提供的方法進(jìn)行定制:
1.main.js引入樣式原文件
// 引入全部樣式 import 'vant/lib/index.less'; // 引入單個組件樣式 import 'vant/lib/button/style/less';
2.創(chuàng)建less文件

3.修改配置
用vue-cli搭建的可以直接在vue.config.js中更改配置:
const path = require("path");
//less文件的路徑
const myTheme = path.resolve(__dirname, "./src/assets/less/vantChange.less");
module.exports = {
css: {
loaderOptions: {
less: {
modifyVars: {
hack: `true; @import "${myTheme}";`
}
},
}
},
}
4.修改樣式
參考官網(wǎng)提供的樣式變量


第二種:直接覆蓋樣式
1.找到class類名
在控制臺選中元素,獲取class類名,雙擊選中復(fù)制

2.修改樣式
<style lang="less" scoped>
.van-sidebar-item--select::before{
background-color:#CCCCFF;
}
.van-sidebar-item--select, .van-sidebar-item--select:active{
background-color:#FFCCCC;
color:white;
}
</style>
Vant自定義主題顏色
先看效果圖
修改前:

修改后
// less文件代碼 @white: #000;

步驟方法
1、 在main.js 中引入
import 'vant/lib/index.less';
2、新建less 文件,用來覆蓋修改 框架里的顏色

3、安裝less和 less-loader, less-loader徐、需安裝5.0.0版本
npm install less --save-dev npm install less less-loader@5.0.0 --save-dev
4、在vue.config.js 文件中添加以代碼
// 需要放在module.exports對象里
chainWebpack: config => {
const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))
},
// 此函數(shù)為方法體,需放在對象的外面
function addStyleResource(rule) {
rule.use('style-resource')
.loader('style-resources-loader')
.options({
patterns: [
path.resolve(__dirname, './src/assets/less/vant.less'), // 需要全局導(dǎo)入的less
],
})
}
完整的代碼為:
function addStyleResource(rule) {
rule.use('style-resource')
.loader('style-resources-loader')
.options({
patterns: [
path.resolve(__dirname, './src/assets/less/vant.less'), // 需要全局導(dǎo)入的less
],
})
}
module.exports = {
css: {
extract: IS_PROD, // 是否將組件中的 CSS 提取至一個獨立的 CSS 文件中 (而不是動態(tài)注入到 JavaScript 中的 inline 代碼)。
sourceMap: false,
loaderOptions: {
// less加載器
less: {
javascriptEnabled: true,
modifyVars: {
// 直接覆蓋變量
// 'text-color': 'red',
// 或者可以通過 less 文件覆蓋(文件路徑為絕對路徑)
'hack': `true; @import "${resolve('./src/assets/less/vant.less')}";`
}
},
scss: {
// 向全局sass樣式傳入共享的全局變量, $src可以配置圖片cdn前綴
// 詳情: https://cli.vuejs.org/guide/css.html#passing-options-to-pre-processor-loaders
// prependData: `
// @import "assets/css/mixin.scss";
// @import "assets/css/variables.scss";
// $cdn: "${defaultSettings.$cdn}";
// `
}
}
},
// 對象參數(shù)
chainWebpack: config => {
const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)))
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-router之實現(xiàn)導(dǎo)航切換過渡動畫效果
今天小編就為大家分享一篇vue-router之實現(xiàn)導(dǎo)航切換過渡動畫效果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
vue實現(xiàn)移動端H5數(shù)字鍵盤組件使用詳解
這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)移動端H5數(shù)字鍵盤組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08
vue element實現(xiàn)表格增加刪除修改數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了vue element實現(xiàn)表格增加刪除修改數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05
Vue在頁面右上角實現(xiàn)可懸浮/隱藏的系統(tǒng)菜單
這篇文章主要介紹了Vue在頁面右上角實現(xiàn)可懸浮/隱藏的系統(tǒng)菜單,實現(xiàn)思路大概是通過props將showCancel這個Boolean值傳遞到子組件,對父子組件分別綁定事件,來控制這個系統(tǒng)菜單的顯示狀態(tài)。需要的朋友可以參考下2018-05-05
關(guān)于vue中ref的使用(this.$refs獲取為undefined)
這篇文章主要介紹了關(guān)于vue中ref的使用(this.$refs獲取為undefined),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

