2021-09-15 15:46:27 +08:00

2.9 KiB
Raw Permalink Blame History

ConfigProvider 全局配置

介绍

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

引入

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

"usingComponents": {
  "van-config-provider": "@vant/weapp/config-provider/index"
}

定制主题

介绍

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

示例

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

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

自定义 CSS 变量

通过 CSS 覆盖

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

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

通过 ConfigProvider 覆盖

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

<van-config-provider theme-vars="{{ themeVars }}">
  <van-cell-group>
    <van-field label="评分">
      <view slot="input" style="width: 100%">
        <van-rate
          model:value="{{ rate }}"
          data-key="rate"
          bind:change="onChange"
        />
      </view>
    </van-field>
    <van-field label="滑块" border="{{ false }}">
      <view slot="input" style="width: 100%">
        <van-slider
          value="{{ slider }}"
          data-key="slider"
          bind:change="onChange"
        />
      </view>
    </van-field>
  </van-cell-group>

  <view style="margin: 16px">
    <van-button round block type="primary">提交</van-button>
  </view>
</van-config-provider>
import Page from '../../common/page';

Page({
  data: {
    rate: 4,
    slider: 50,
    themeVars: {
      rateIconFullColor: '#07c160',
      sliderBarHeight: '4px',
      sliderButtonWidth: '20px',
      sliderButtonHeight: '20px',
      sliderActiveBackgroundColor: '#07c160',
      buttonPrimaryBorderColor: '#07c160',
      buttonPrimaryBackgroundColor: '#07c160',
    },
  },

  onChange(event) {
    const { key } = event.currentTarget.dataset;
    this.setData({
      [key]: event.detail,
    });
  },
});

API

Props

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