如何自定义 Ant.design 样式

IT技术 javascript css reactjs antd
2021-04-05 20:41:24

谁知道如何以正确的方式自定义 Ant.design 样式?

例如,我想更改 Header 部分的默认 backgroundColor 和高度:

import React, { Component } from 'react';
import { Form, Layout } from 'antd';
const { Header, Footer, Sider, Content } = Layout;

export default class Login extends Component {

render () {
    return (
        <div>
            <Layout>
                <Header style={{backgroundColor: '#555555', height: '5vh'}}>header</Header>
                <Layout>
                    <Content>main content</Content>
                </Layout>
                <Footer>footer</Footer>
            </Layout>
        </div>
    )
}
}

可以吗,或者有更好的自定义样式的方法?因为我还没有找到一些组件的属性或smth。像这样。

6个回答

Antd 已经在 LESS 变量中外部化了大部分样式变量

正如你所看到的

https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less

为了能够覆盖这些变量,您需要使用modifyVarLESS 中的函数

你可以在这里找到更多关于主题的信息

所以对于你的具体问题,@layout-header-background工作

我的个人方法(不过我正在使用 dva-cli):

每次我需要覆盖 CSS 时,我都会使用位于同一文件夹中的 CSS 文件并将其导入,例如:

你的component.js

import styles from './your-stylesheet.css';
...
< AntdComponent className= {styles.thestyle} />

你的样式表.css

.thestyle {
  background-color: '#555555';
}
内联样式然后:我会去: <Button style={{backgroundColor:"#dedede", width:20, height:10}}/>
2021-06-11 20:41:24
以同样的方式做,但我想要像 <Button bgColor="#dedede" width="20" height="10" ... />
2021-06-14 20:41:24

这就是我在特定组件中自定义默认 antd 样式的方式

在 scss 或更少

.booking_information_table {
    :global {
        .ant-table-thead > tr > th,
        .ant-table-tbody > tr > td {
            padding: 0 0 !important;
            background-color: unset;
            border: none;
            overflow-wrap: break-word;
        }
 }
}

在js文件中

在导入语句之后

从'./component.module.less'导入样式

作为回报

<Table
   dataSource={bookingInformationDataSource}
   columns={bookingInformationColumns}
   pagination={false}
   className={styles.booking_information_table}
 />

在 less 文件(如 CSS)中,您可以处理自定义样式。例如在你的情况

.ant-layout-header{ 
      height: 100vh;
      background-color:#f50;
}

如果您使用蚂蚁卡

.ant-card-head{color:#j14}

我希望你现在能明白

是的,我明白了,但是如何制作描述表格中列名的那一行的顶部和底部边框?
2021-06-02 20:41:24
我通过覆盖类尝试了同样的事情,但不知道为什么它不起作用。我用的比较少。
2021-06-06 20:41:24

由于样式嵌套优先级,上述方法适用于简单的组件,例如,Header但并不总是适用于复杂的组件,例如Menu, Tabs, Collapse, Select, 和其他。在工作中,我们使用jayanes描述的方法,但我们更深入地研究了嵌套的 Ant Design 类。让我在下面的例子中解释一下:当你Tabs从“antd”导入时,你只有 2 个标签来覆盖样式:TabsTabPane

<div className={styles.tabsContainer}>
    <Tabs className={styles.tabs}>
        <TabPane className={styles.tabPane}>
            Tab 1 Title
        </TabPane>
    </Tabs>
</div>

但是这个antd组件结构非常复杂。您可以在开发工具验证:它有.ant-tabs-bar.ant-tabs-nav-container.ant-tabs-tab-prev.ant-tabs-tab-next.ant-tabs-nav-wrap.ant-tabs-nav-scroll.ant-tabs-tab-active.ant-tabs-ink-bar和其他人。要走的路是:在您的less文件中,将.ant-...嵌套在您自己的父组件中className(以避免在代码编译后覆盖整个应用程序中的所有antd类)。在那里写你自己的 css 属性,例如:

.tabsContainer {
    .ant-tabs-tab-active {
        background: #fff266;
        color: #31365c;
        &:hover {
            color: darken(#31365c, 5%);
        }
    }
    .ant-tabs-ink-bar {
        background: #fff266;
    }
}

如果您还需要更详细的解释,请参考我在 YouTube 上发布的关于如何自定义 Ant Design 组件 - 选项卡的视频。

@duduwe 我在 YouTube 上的视频是“Ant Design library with React:自定义组件 - 选项卡”。
2021-06-07 20:41:24
你好 Tania,youtube 链接在哪里?这与 MUI 中的 makeStyles 方法相同吗?我不喜欢通过less进行修改的方法。
2021-06-20 20:41:24