最近在做react+antd项目。不可避免的遇到了修改antd默认样式的问题。
但是我发现了有时候死活改不了样式,愤怒的电脑差点摔了(!imporent 不顶用,加父层级也不顶用)。
比如,第一种:
table组件的表头背景色设置,如果直接使用元素样式,会修改整个项目的table。这里我用的方法是,给table添加一个div父元素,给他设置个className,然后设置这个样式内的table表头样式。
我使用的.scss预编译。
<div className={styles.boxW} >
<Table
columns={colType}
rowKey='fxwd'
pagination={false}
bordered
dataSource={dataType}
/>
</div>
( 主要的是在这里 .boxW 是我命名的父级类名 :global {} 来控制当前页面的全局)
样式如下
.boxW,.normalB {
:global {
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 8px 8px !important;
}
.ant-table-thead > tr > th {
background-color: rgb(192, 244, 248);
}
.ant-table-thead > tr > th:hover {
background-color: rgb(192, 244, 248);
}
.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover {
background: rgb(192, 244, 248);
}
}
}
这样就可以只修改到当前文件里table的样式了。
这里顺便记录一下.less的样式继承,通过(&:extend(被继承class名))。
.boxW {
min-width: 1150px;
}
.normalB {
&:extend(.boxW);
&:extend(.boxBorder);
}
第二种是我需要控制一个padding效果,但是我发现死活不可以,也是用的 :global {}
看图 时间要padding,排序不要
样式如下
.noteCategoryTitle{
:global {
.adm-dropdown-item{
.adm-dropdown-item-title{
padding: 0;
}
}
}
}
当然我们要的那个还是要单独给加上padding,因为他俩一个父亲
这里是内容代码:
搞定拉