假设我想将Select组件的标准白色背景颜色更改为绿色。
我的尝试...
<Select
style={{ backgroundColor: 'green' }}>
// Options...
</Select>
......没有这样做。
有人能指出我正确的方向吗?
[编辑]
我最终使用Jesper We建议的方法。
覆盖所有选择的颜色......
.ant-select-selection {
background-color: transparent;
}
...然后我可以单独设置Select组件的样式。
答案 0 :(得分:2)
<Select>
呈现一整套<div>
,您需要查看生成的HTML元素树,以了解您正在做什么。你无法通过style属性来完成它,你需要在CSS中完成它。
附加背景颜色的正确位置是
.ant-select-selection {
background-color: green;
}
这将使您的所有选择变为绿色。如果您想为不同的选择选择不同的颜色,请给他们个人className
。
答案 1 :(得分:2)
对于包含Select元素的表单,我在render
中有一些代码:
const stateTasksOptions =
this.tasksStore.filters.init.state.map(item =>
<Select.Option key={item.id} value={item.id} title={<span className={`${item.id}Label`}>{item.title}</span>}>
<span className={`${item.id}Label`}>{item.title}</span> - <span class="normal-text">{item.help}</span>
</Select.Option>
)
return (
....
<Select
mode="multiple"
value={this.tasksStore.filters.selected.state.map(d => d)}
onChange={this.handleTasksStatus}
optionLabelProp="title"
>
{stateTasksOptions}
</Select>
....
)
还有一些用于着色的CSS。
答案 2 :(得分:1)
尝试使用dropdownStyle而不是样式。
<Select
dropdownStyle={{ backgroundColor: 'green' }}>
// Options...
</Select>
dropdownStyle是精选道具之一。
参考:antd select
答案 3 :(得分:0)
使用以上所有答案,您无法有条件地更改标签的样式,但使用以下方法,您可以更改。
您可以进行黑客入侵,并根据需要选择select下拉标签的样式。 您可以使用带有两个参数的select的dropdownRender
使用道具儿童属性来访问每个标签并更改样式,您可以根据需要有条件地更改样式。
下面供参考的是代码沙箱的示例链接
这可能不是一种有效的方法,但是您现在可以使用它来满足您的业务需求。
谢谢
答案 4 :(得分:0)
他们通过v4蚂蚁设计实现了此功能:
https://github.com/ant-design/ant-design/pull/21064
但是要提防在从v3-> v4盲目升级之前-发生了很多变化:
https://github.com/ant-design/ant-design/issues/20661
答案 5 :(得分:0)
有人说选择器是
.ant-select-selection {...
但是应为选择器,如下所示:
.ant-select-selector {
background-color: green;
}
答案 6 :(得分:0)
摘自其官方文档https://pro.ant.design/docs/style
重写组件样式 由于项目的特殊需求,我们经常满足覆盖组件样式的需求,这是一个简单的示例。
Antd Select在多选状态下,默认值将显示所有选择项,在这里,当内容超出此高度时,我们为显示滚动条添加一个限制高度。
// TestPage.ts
import { Select } from 'antd';
import styles from './TestPage.less';
const Option = Select.Option;
const children = [];
for (let i = 10; i < 36; i++) {
children.push(<Option key={i.toString(36) + i}>{i.toString(36) + i}</Option>);
}
ReactDOM.render(
<Select
mode="multiple"
style={{ width: 300 }}
placeholder="Please select"
className={styles.customSelect}
>
{children}
</Select>,
mountNode,
);
/* TestPage.less */
.customSelect {
:global {
.ant-select-selection {
max-height: 51px;
overflow: auto;
}
}
}
需要注意两点:
CSS模块不会转换导入的antd组件类名称,因此必须将覆盖的类名称.ant-select-selection放在:global中。 由于前面的注释,覆盖是全局的。为避免影响其他Select组件,此设置需要使用额外的类名进行包装,以添加范围限制
答案 7 :(得分:0)
在 angular 中,您可以使用 ng-deep 覆盖样式
::ng-deep .ant-select-selector {
background-color: red;
}