cwd*_*cwd 12 html css pseudo-element
如果我有一个optons列表,我怎么能使用CSS伪元素:在{content:''}之前影响<option>?下面有三个选项,我想在每个选项之前插入文本.
我知道这可以通过javascript/jQuery完成,但它可以用CSS吗?
<html>
<head>
<style>
option::before {
content: "sandy - "
}
</style>
</head>
<body>
<select>
<option>beach</option>
<option>field</option>
<option>carpet</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Gar*_*ers 20
在::before和::after伪元素实际上在前面加上/追加一个子节点的元素,所以这不会是不能包含子节点的任何元素上工作.
它(大致)相当于:
<option><span>sandy - </span>beach</option>
Run Code Online (Sandbox Code Playgroud)
如果要更新文本值,则需要使用JavaScript.
在 2018 年,这在 Chrome、Edge、Firefox 中确实有效,但前提size是该属性指定的值大于 1。Safari 缺乏支持。
select {
width: 300px;
cursor: pointer;
font: 11pt Helvetica;
outline: 0;
}
select option {
padding: 8px;
font: 11pt Helvetica;
vertical-align: middle;
}
select option::before {
font-family: FontAwesome, sans-serif;
font-size: 16px;
content: attr(data-before);
margin-right: 8px;
}
div + div {
margin-top: 20px;
}Run Code Online (Sandbox Code Playgroud)
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet"/>
<div>
<select size="4">
<option data-before="">500px</option>
<option data-before="">Adjust</option>
<option data-before="">Adn</option>
<option data-before="">Align-center</option>
<option data-before="">Align-justify</option>
<option data-before="">Align-left</option>
<option data-before="">Align-right</option>
</select>
</div>
<div>
<select>
<option data-before="">500px</option>
<option data-before="">Adjust</option>
<option data-before="">Adn</option>
<option data-before="">Align-center</option>
<option data-before="">Align-justify</option>
<option data-before="">Align-left</option>
<option data-before="">Align-right</option>
</select>
</div>Run Code Online (Sandbox Code Playgroud)