• 定制主题
    • 定制方式
      • 初始化项目时定制主题
      • 手动修改
      • 在 webpack 中定制主题

    定制主题

    Ant Design 设计规范上支持一定程度的样式定制,以满足业务和品牌上多样化的视觉需求,包括但不限于主色、圆角、边框和部分组件的视觉定制。

    定制主题 - 图1

    定制方式

    Ant Design 的样式使用了 Less 作为开发语言,并定义了一系列全局/组件的样式变量,你可以根据需求进行相应调整,默认样式变量

    Ant Design React 的主题定制文件在 ng-zorro-antd 中同样可以使用。

    初始化项目时定制主题

    在初始化项目时 ng add ng-zorro-antd 时选择自定义主题即可自动配置好自定义主题的相关文件,修改 src/theme.less 文件内容就可以自定义主题。

    手动修改

    src 目录下建立一个单独的 theme.less 文件,在 angular.json 文件的 styles 列表加入该文件

    1. ...
    2. "styles": [
    3. ...
    4. "src/theme.less"
    5. ...
    6. ]
    7. ...

    theme.less 样例如下

    在样例中通过修改 @primary-color 的数值将 ng-zorro-antd 的基础色修改为 #f5222d,开发者可以根据实际需求自由修改。

    1. // -------- 引入官方提供的 less 样式入口文件 -----------
    2. @import "../node_modules/ng-zorro-antd/ng-zorro-antd.less";
    3. // -------- 自定义参数覆盖 -----------
    4. @primary-color : #f5222d;

    在 webpack 中定制主题

    Angular CLI 提供了 custom-webpack 的 builder,可以通过该 builder 轻松的调整 webpack 中 less-loader 的配置来进行主题配置。

    • angular.json 中引入 ng-zorro-antd.less 文件
    1. {
    2. "styles": [
    3. "node_modules/ng-zorro-antd/ng-zorro-antd.less"
    4. ]
    5. }
    • 安装 @angular-builders/custom-webpack builder
    1. npm i -D @angular-builders/custom-webpack
    • 新建 webpack 配置文件 extra-webpack.config.js
    1. module.exports = {
    2. module: {
    3. rules: [
    4. {
    5. test : /\.less$/,
    6. loader: 'less-loader',
    7. options: {
    8. modifyVars: { // 修改主题变量
    9. 'primary-color': '#1DA57A',
    10. 'link-color': '#1DA57A',
    11. 'border-radius-base': '2px'
    12. },
    13. javascriptEnabled: true
    14. }
    15. }
    16. ]
    17. }
    18. };
    • angular.json 中配置自定义 builder
    1. "architect": {
    2. "build": {
    3. - "builder": "@angular-devkit/build-angular:browser",
    4. + "builder": "@angular-builders/custom-webpack:browser",
    5. "options": {
    6. + "customWebpackConfig": {
    7. + "path": "./extra-webpack.config.js",
    8. + "mergeStrategies": {
    9. + "module.rules": "append"
    10. + },
    11. + "replaceDuplicatePlugins": true
    12. + }
    13. ...
    14. },
    15. ...
    16. },
    17. "serve": {
    18. - "builder": "@angular-devkit/build-angular:dev-server",
    19. + "builder": "@angular-builders/custom-webpack:dev-server",
    20. ...
    21. }
    22. ...
    23. }

    更多在 Angular CLI 中定制 webpack 的文章可以参考

    • Angular Builder Document
    • Angular CLI: Custom webpack Config
    • Customize Webpack Configuration in Your Angular Application全部可被自定义 less 变量可以参考 这里。