美文网首页需要近期研究的项目
sass - 自定义 Ant Design 主题

sass - 自定义 Ant Design 主题

作者: 麦西的西 | 来源:发表于2022-05-12 21:31 被阅读0次

Ant Design 的样式使用了 Less 作为开发语言,并定义了一系列全局/组件的样式变量。我们可以通过覆盖这些变量达到自定义主题的目的。antd官网针对使用less的项目提供了自定义主题的方案,那么使用sass语言的项目怎么自定义主题呢?

1. 定义样式变量文件ant.var.scss

定义样式变量文件ant.var.scss,在里面写入我们要覆盖的样式变量。比如:

$primary-color: #2a83fd; // 全局主色

// 字体颜色
$text-color: #b2d6ff; // 主文本色
$text-color-secondary: #fff; // 次文本色

// 字体大小
$font-size-base: 0.14rem;

// 行高
$line-height-base: 1.5715;

// 高度
$height-base: 0.32rem;

// 边框
$border-width-base: 0.01rem;
$border-radius-base: 0.02rem;

antd 的样式变量有很多,根据自己需要覆盖即可。所有的样式变量参考https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less

2. 定义主题样式文件 theme.less

// 用自定义样式覆盖antd样式
@import '~antd/dist/antd.less';
@import './antd.var.scss';

3. 定义文件 sassVarsToLess.js

定义文件 sassVarsToLess.js,用来将 sass 变量翻译成 less 变量,具体代码如下:

module.exports = function (source) {
  return source.replace(/\$/gi, '@');
};

4. 在 webpack 中配置

    {
      test: /\.less$/,
      use: [
        { loader: "style-loader" },
        { loader: "css-loader" },
        {
          loader: "less-loader",
          options: {
            javascriptEnabled: true
          }
        }
      ]
    },

    {
      test: /\.scss$/,
      issuer: {
        exclude: /\.less$/,
      },
      // ...
    },
    
    {
      test: /\.scss$/,
      issuer: /\.less$/,
      use: {
        loader: './sassVarsToLess.js'
      }
    },

5. babel 配置

{
    "presets": [
        // ...
    ],
    "plugins": [
        // ...
        ["import", {
            "libraryName": "antd",
            "libraryDirectory": "lib"
        }]
    ]
}

至此,我们便完成了通过自定义样式变量文件ant.var.scss,来覆盖默认的 Ant Design 样式变量。

相关文章

网友评论

    本文标题:sass - 自定义 Ant Design 主题

    本文链接:https://www.haomeiwen.com/subject/epgmyrtx.html