主题定制

Mand Mobile默认提供了一套基于滴滴的金融业务设计规范的UI主题,同时还支持主题定制。用户可以对颜色、字体、元素尺寸等样式进行自由调整,从而满足在不同业务场景下的视觉需求。

注意:新项目可通过mand-mobile-template初始化,问题Need customize theme?回复Y,即可集成主题定制的相关配置。现有项目集成请参考以下教程。

主题定制 - 图1

样式变量

Mand Mobile样式基于Stylus开发,可通过全局和组件的样式变量对主题样式进行调整

完整的变量列表可以查看默认样式变量

变量覆盖

可以通过引入组件源码(components目录下),并覆盖样式变量的方式来实现主题定制

  • 首先,项目需要安装依赖,babel-plugin-import stylus stylus-loader css-loader,完整rules可参考配置
  1. npm install --save-dev babel-plugin-import stylus stylus-loader css-loader
  • 配置babel-plugin-import, 确保引入组件源码
  1. // .babelrc or babel-loader/ts-loader option
  2. {
  3. "plugins": [
  4. ["import", {"libraryName": "mand-mobile", "libraryDirectory": "components"}],
  5. ]
  6. }
  • 创建自定义主题文件,如theme.custom.styl
  1. @import '~mand-mobile/components/_style/global'
  2. @import '~mand-mobile/components/_style/mixin/util'
  3. @import '~mand-mobile/components/_style/mixin/theme'
  4. // 安装并引入css拓展nib(可选)
  5. @import '~nib/lib/nib/vendor'
  6. @import '~nib/lib/nib/gradients'
  7. // 覆盖样式变量
  8. color-primary = #1AAD19
  • 配置webpack,引入主题文件
  1. const poststylus = require('poststylus')
  2. const pxtorem = require('postcss-pxtorem')
  3. module.exports = {
  4. // ...
  5. module: {
  6. rules: [
  7. // ...
  8. {
  9. test: /\.js$/,
  10. loader: 'babel-loader',
  11. include: /node_modules\/mand-mobile/
  12. },
  13. {
  14. test: /\.styl$/,
  15. use: [
  16. 'css-loader',
  17. {
  18. loader: 'stylus-loader',
  19. options: {
  20. import:['theme.custom.styl']
  21. }
  22. }
  23. ]
  24. },
  25. {
  26. test: /\.(png|jpe?g|gif)(\?.*)?$/,
  27. loader: 'url-loader',
  28. include: /node_modules\/mand-mobile/
  29. },
  30. // ...
  31. ]
  32. },
  33. plugins: [
  34. // ...
  35. new webpack.LoaderOptionsPlugin({
  36. options: {
  37. stylus: {
  38. // pxtorem (配置可根据项目需要而定)
  39. use: [poststylus(pxtorem({ rootValue: 100, propWhiteList: [] }))]
  40. }
  41. }
  42. }),
  43. // ...
  44. ]
  45. }