始终想钻研一下AntDesign组件库的组件款式,碰巧最近在Umi+Ant Design+dva.js的我的项目中,须要配置theme和对组件款式批改的问题,因而间接认真的钻研,并记录为文档。本想钻研明确再发文章总结,然而碍于例子不太好复现,因而每遇到一个问题,就在此记录。


本篇文章,以<Select>组件为例进行演示和解说。

1.批改款式的办法及须要留神的问题

  • 最简略的办法就是依据Ant Design Por官网文档API中提供的属性、Style笼罩、ClassNme等办法,对组件的款式进行批改,然而这并不能齐全满足咱们的需要。
    比方:

    <Select defaultValue="lucy" style={{width: 120, backgroundColor: 'red'}}></Select>


    在此处对select组件的backgroudColor进行批改,然而因为Antd组件自身就有了一个属性,因而出现成果如下:

    这并不满足咱们的需要,因而提供下文的一系列办法。

  • 全局批改某一种组件的款式
    在src/global.less文件中增加如下代码:(此处,我尝试了放到其余.less文件中后果同样能够,然而为了治理不便,倡议波及到全局批改的款式,还是在global.less文件中)

    #root .ant-select-selection{//在src/global.less文件中增加background: red;}

    出现成果如下:

    此时咱们发现,两个Select选择器都变成了红色背景,可是如果咱们只想扭转某一个组件背景的话,咱们该怎么办呢?

  • 全局批改某一种组件的款式(办法2)
    同样,在src/global.less文件中增加如下代码:

    :global  .ant-select-selection{background: blue;}

    出现成果如下:

    款式没有扭转的起因,见下图:因为本来的.ant-select-selection中曾经存在background-color,同时:global的优先级又没有#root高,因而不会笼罩,解决这个问题的办法就是加上! important;

    代码如下:

    :global  .ant-select-selection{background: blue !important;}

    出现成果如下:

    然而这仍然解决不了,咱们只想扭转某一个组件背景的问题,上面解决办法来了!

  • 批改某一个组件的款式(办法一)

    实现代码如下:

    .selection{:global{  .ant-select-selection{    background-color: red !important; //设置色彩  }}}
    import styles from '../../page.less'//.less文件为上文中定义.selection所在文件<Select defaultValue="lucy" style={{width: 120}} className={styles.selection}>

    实现成果如下:(因为此处我只给第一个<Select>加了className)

  • 批改某一个组件的款式(办法二)

    留神:这种办法会存在className被css loader编译成哈希字符串的状况,但提供了解决办法
    实现代码如下:

:global{  .select_test{  //给该select框加的className    .ant-select-selection{      background-color: red;    }  }}
import styles from '../../page.less'//.less文件为上文中定义.select_test所在文件<Select defaultValue="lucy" style={{width: 120}} className={styles.select_test}></Select>

此时咱们会发现并不失效,(起因是:className被css loader编译成哈希字符串)

解决办法:(为了对立代码和浏览器class的统一,将select的className的增加形式换了一下)

<Select defaultValue="lucy" style={{width: 120}} className="select_test"></Select>

问题解决:

(未完!)

参考资料:
怎么批改antd默认款式及遇到的问题
批改ant design 默认css款式

了解尚浅,望不吝赐教!