在我的主CSS文件中找到了这段代码 - 不知道它是如何进入那里的,或者为什么,但它看起来像是重置。漂亮的事情是,即使内容是空字符串,它也完全破坏了选定的选项组。
看看吧:
<style> *::after,
*::before {
content: '';
}
</style>
<select>
<optgroup label="Swedish Cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
</optgroup>
<optgroup label="German Cars">
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</optgroup>
</select>
https://jsfiddle.net/des2016/d3e6z3ay/
而且,哦,有趣的是,它只在Firefox上这样做。
- 这个 CSS 应该为我们做什么?
- 为什么它会破坏选项组?
* 用于表示所有元素。
::before
创建一个伪元素,该伪元素是匹配元素的第一个子元素,::after
伪元素与所选元素的最后一个虚拟子元素匹配。
它通常用于通过使用 content 属性向元素添加修饰内容。默认情况下,此元素是内联的。
下面的代码在所有元素之前和之后都放了一个''(无(。
<style> *::after,
*::before {
content: '';
}
</style>
在Firefox中,只有似乎很高兴的是,在这种特殊情况下,当您放置一些东西来分隔optgroup时,您会破坏它元素。