【发布时间】:2018-07-23 18:08:14
【问题描述】:
我正在尝试将一些 CSS ::before 内容添加到 <select multiple> 的 <option> 标记中,具体取决于是否选择了该选项。
以下内容目前在 Chrome 和 FF 中运行良好,但我在 IE11 中遇到问题。
select > option::before {
display: inline-block;
width: 10em;
}
select > option:checked::before {
content: "SELECTED: ";
}
select > option:not(:checked)::before {
content: "excluded: " ;
}
<select multiple>
<option value="1" selected="selected">1</option>
<option value="2" selected="selected">2</option>
<option value="3" selected="selected">3</option>
<option value="4" selected="selected">4</option>
<option value="5" selected="selected">5</option>
</select>
我读过其他关于 IE 中伪元素的 SO 帖子(1、2、3、4),大多数似乎指向设置某种 position 或 display 属性我试过了。
这是因为<option> 标签不应该包含子元素吗?
【问题讨论】:
-
好问题。我会在 48 小时内赏金。我正在尝试在this question 中做同样的事情我刚刚回答了这似乎在 IE 中是不可能的,因为浏览器历来在渲染
select元素及其内容方面相对固执己见,但也许有一些解决方法 -
我认为选项内的伪元素无效stackoverflow.com/questions/19410679/…
-
我们无法在
IE中创建您想要的内容,因为它不允许在<select>框中除了<option>标记之外的任何内容。因此,如果您愿意,我们可以使用 单选按钮 创建<select>框样式,并从中获得您想要的价值。因此,如果您愿意,我可以为您创建一个。除此之外只有script可以救你 -
你愿意接受 JS 解决方案吗?
-
@Huangism 恐怕是这样。
标签: html css internet-explorer html-select