Vant 主题定制

专栏说明

这里总结了移动端 Vant UI 组件库的自定义主题定制操作。查看官网主题定制步骤

1. 第一步:引入 less 样式文件

在 main.js 入口文件中引入

// 引入全部样式
import 'vant/lib/index.less'

// 引入单个组件样式
import 'vant/lib/button/style/less'

2. 第二步:根据变量名来修改主题

  • 方案一:在配置文件中修改(不推荐,每次修改完就要打包)
  • 方案二:单独维护一个 .less 主题文件,并在配置文件中引入(推荐,每次改动就会实时更新)
点击查看 webpack 构建的项目怎么修改
// webpack.config.js

const path = require('path')
const fullPath = path.join(__dirname, './src/theme.less')

module.exports = {
  rules: [
    {
      test: /\.less$/,
      use: [
        // ...其他 loader 配置
        {
          loader: 'less-loader',
          options: {
            // 若 less-loader 版本小于 6.0,请移除 lessOptions 这一级,直接配置选项。
            lessOptions: {
              // 方案一 和 方案二选一个就可以了
              modifyVars: {
                // 方案一:直接覆盖变量
                'text-color': '#111',
                'border-color': '#eee',

                // 方案二:通过 less 文件覆盖(文件路径为绝对路径)
                hack: `true; @import "${fullPath}";`
              }
            }
          }
        }
      ]
    }
  ]
}
点击查看 vue-cli 构建的项目怎么修改
// vue.config.js

const path = require('path')
const fullPath = path.join(__dirname, './src/theme.less')

module.exports = {
  css: {
    loaderOptions: {
      less: {
        // 若 less-loader 版本小于 6.0,请移除 lessOptions 这一级,直接配置选项。
        lessOptions: {
          // 方案一 和 方案二选一个就可以了
          modifyVars: {
            // 方案一:直接覆盖变量
            'text-color': '#111',
            'border-color': '#eee',

            // 方案二:通过 less 文件覆盖(文件路径为绝对路径)
            hack: `true; @import "${fullPath}";`
          }
        }
      }
    }
  }
}
上次更新:
贡献者: 唐干宵