ConfigProvider 全局配置

介绍

用于配置 Vant Weapp 组件的主题样式,从 v1.7.0 版本开始支持。

引入

app.jsonindex.json中引入组件,详细介绍见快速上手

  1. "usingComponents": {
  2. "van-config-provider": "@vant/weapp/config-provider/index"
  3. }

定制主题

介绍

Vant Weapp 组件通过丰富的 CSS 变量 来组织样式,通过覆盖这些 CSS 变量,可以实现定制主题、动态切换主题等效果。

示例

以 Button 组件为例,查看组件的样式,可以看到 .van-button--primary 类名上存在以下变量:

  1. .van-button--primary {
  2. color: var(--button-primary-color,#fff);
  3. background: var(--button-primary-background-color,#07c160);
  4. border: var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160);
  5. }

自定义 CSS 变量

通过 CSS 覆盖

你可以直接在代码中覆盖这些 CSS 变量,Button 组件的样式会随之发生改变:

  1. /* 添加这段样式后,Primary Button 会变成红色 */
  2. page {
  3. --button-primary-background-color: red;
  4. }

通过 ConfigProvider 覆盖

ConfigProvider 组件提供了覆盖 CSS 变量的能力,你需要在根节点包裹一个 ConfigProvider 组件,并通过 theme-vars 属性来配置一些主题变量。

  1. <van-config-provider theme-vars="{{ themeVars }}">
  2. <van-cell-group>
  3. <van-field label="评分">
  4. <view slot="input" style="width: 100%">
  5. <van-rate model:value="{{ rate }}" data-key="rate" bind:change="onChange" />
  6. </view>
  7. </van-field>
  8. <van-field label="滑块" border="{{ false }}">
  9. <view slot="input" style="width: 100%">
  10. <van-slider value="{{ slider }}" data-key="slider" bind:change="onChange" />
  11. </view>
  12. </van-field>
  13. </van-cell-group>
  14. <view style="margin: 16px">
  15. <van-button round block type="primary">提交</van-button>
  16. </view>
  17. </van-config-provider>
  1. import Page from '../../common/page';
  2. Page({
  3. data: {
  4. rate: 4,
  5. slider: 50,
  6. themeVars: {
  7. rateIconFullColor: '#07c160',
  8. sliderBarHeight: '4px',
  9. sliderButtonWidth: '20px',
  10. sliderButtonHeight: '20px',
  11. sliderActiveBackgroundColor: '#07c160',
  12. buttonPrimaryBorderColor: '#07c160',
  13. buttonPrimaryBackgroundColor: '#07c160',
  14. }
  15. },
  16. onChange(event) {
  17. const { key } = event.currentTarget.dataset;
  18. this.setData({
  19. [key]: event.detail,
  20. });
  21. }
  22. });

API

Props

参数说明类型默认值
theme-vars自定义主题变量object-

ConfigProvider 全局配置 - 图1