ant-design/docs/react/customize-theme.en-US.md

64 lines
3.4 KiB
Markdown
Raw Normal View History

2016-11-18 15:38:36 +08:00
---
order: 5
2016-12-06 10:19:51 +08:00
title: Customize Theme
2016-11-18 15:38:36 +08:00
---
2016-11-24 04:13:21 +08:00
Ant Design allows to customize some basic design aspects in order to meet the needs of UI diversity from business and brand, including primary color, border radius, border color, etc.
2016-11-18 15:38:36 +08:00
2016-11-18 16:16:34 +08:00
![](https://zos.alipayobjects.com/rmsportal/zTFoszBtDODhXfLAazfSpYbSLSEeytoG.png)
2016-11-18 15:38:36 +08:00
## Less variables
2016-11-24 04:13:21 +08:00
We are using [Less](http://lesscss.org/) as the development language of style. A set of less variables are defined for each design aspect that can be customized to your needs.
2016-11-18 15:38:36 +08:00
- [Default Variables](https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less)
2016-11-24 04:13:21 +08:00
Please report an issue if the existing list of variables is not enough for you.
2016-11-18 15:38:36 +08:00
2016-12-28 00:23:32 +08:00
## How to do it
2016-11-18 15:38:36 +08:00
2016-11-24 04:13:21 +08:00
We recommend [modifyVars](http://lesscss.org/usage/#using-less-in-the-browser-modify-variables) to override the default values of the variables. There are two ways to achieve it in practice.
2016-11-18 15:38:36 +08:00
2016-11-24 04:13:21 +08:00
You can use this [example](https://github.com/ant-design/antd-init/tree/master/examples/customize-antd-theme) as a playground.
2016-11-18 15:38:36 +08:00
### 1) Using `theme` property (recommended way)
2016-11-18 15:38:36 +08:00
Specify the `theme` property in `package.json` or `.roadhogrc` file, whose value can be either an object or the path to a JS file that contains the custom values of specific variables:
2016-11-24 04:13:21 +08:00
- example of directly specifying the custom values as an object:
2016-11-18 15:38:36 +08:00
```js
"theme": {
2017-01-04 15:25:53 +08:00
"primary-color": "#1DA57A",
2016-11-18 15:38:36 +08:00
},
```
2016-11-24 04:13:21 +08:00
- example of specifying a [file path](https://github.com/ant-design/antd-init/blob/master/examples/customize-antd-theme/theme.js) to a JS file:
2016-11-18 15:38:36 +08:00
```js
2016-11-22 14:47:56 +08:00
"theme": "./theme.js",
2016-11-18 15:38:36 +08:00
```
2017-02-20 20:29:30 +08:00
This approach is available only when using [antd-init](https://github.com/ant-design/antd-init) or [dva-cli](https://github.com/dvajs/dva-cli). If you choose other boilerplates, you can write webpack config about [less-loader modifyVars](https://github.com/webpack/less-loader#less-options) like [atool-build ](https://github.com/ant-tool/atool-build/blob/a4b3e3eec4ffc09b0e2352d7f9d279c4c28fdb99/src/getWebpackCommonConfig.js#L131-L138) does.
2016-11-18 15:38:36 +08:00
2016-12-28 00:23:32 +08:00
Note:
2017-03-21 15:55:14 +08:00
- Importing style from less files is necessary.
- If you import styles by specifying the `style` option of [babel-plugin-import](https://github.com/ant-design/babel-plugin-import), change it from `'css'` to `true`, which will importing the `less` version of antd.
- If you import styles from `'antd/dist/antd.css'`, change it to `antd/dist/antd.less`.
- When using `dva-cli@0.7.0+`, you should add the `theme` block to [.roadhogrc](https://github.com/dvajs/dva-example-user-dashboard/commit/d6da33b3a6e18eb7f003752a4b00b5a660747c31) instead of `package.json`.
2016-12-28 00:23:32 +08:00
- If you want to override `@icon-url`, the quotes must be contained in value like `"@icon-url": "'your-icon-font-path'"` ([A fix sample](https://github.com/visvadw/dvajs-user-dashboard/pull/2)).
2016-11-18 15:38:36 +08:00
2016-11-24 04:13:21 +08:00
### 2) Overriding Less variables (alternative way)
2016-11-18 15:38:36 +08:00
Override variables via less definition files.
2016-11-24 04:13:21 +08:00
Create a standalone less file like the one below, and import it in your project.
2016-11-18 15:38:36 +08:00
```css
@import "~antd/dist/antd.less"; // import official less entry file
@import "your-theme-file.less"; // override variables here
```
2016-11-24 04:13:21 +08:00
Note: This way will load the styles of all components, regardless of your demand, which cause `style` option of `babel-plugin-import` not working.
2017-06-21 20:58:39 +08:00
## Related Articles
- [How to Customize Ant Design with React & Webpack… the Missing Guide](https://medium.com/@GeoffMiller/how-to-customize-ant-design-with-react-webpack-the-missing-guide-c6430f2db10f)