我在HTML中有一个select元素,我想给它一个占位符。我希望这个占位符是可选的(这样就不会选择任何选项)。
因为它是一个占位符,所以我希望选项文本是灰色的,并且当选项被选中时,我希望select元素的文本也是灰色的。
有许多问题可以解决这个问题的一部分,但没有一个问题能提供一个功能性的解决方案(我能找到)。
下面是所需结果的示例(请参阅园区下拉列表)。

我正在为项目使用React,并查看了React-select包,但找不到像这样实现它的方法。
发布于 2021-07-25 20:42:43
您可以使用CSS执行此操作,方法是:使用选择器将选项color设置为灰色,在选定默认设置时将所选选项设置为灰色,并将其它选项设置为特定颜色(这样,当select为灰色时,它们将保留该颜色,而不是继承它的灰色)。下面是一个例子:
const {useState} = React;
function Example() {
const [value, setValue] = useState("");
const onChange = ({currentTarget: {value}}) => {
setValue(value);
};
return <select size="1" className={value ? "" : "greyed"} value={value} onChange={onChange}>
<option value="">Default</option>
<option value="A">Option A</option>
<option value="B">Option B</option>
</select>;
}
ReactDOM.render(<Example/>, document.getElementById("root"));/*
We have this so that when the select is greyed, its options aren't
*/
select option[value] {
color: black;
}
/*
Grey-out an element with the class, and option elements with blank values
*/
.greyed, select option[value=""] {
color: grey;
}<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.development.js"></script>
https://stackoverflow.com/questions/68518584
复制相似问题