css - 在 optgroup 标签上使用::before css 选择器时出现浏览器兼容性问题

标签 css

以下代码仅在 Chrome 上获得所需的结果:

HTML:

<select multiple style="width:500px">
  <optgroup class="outg" label="Swedish Cars">
    <option>1</option>
    <option>2</option>
    <option>3</option>
  </optgroup>
</select>

CSS:

.outg::before {
  content: "";
  border-style: solid;
  border-width: 7px 0 7px 7px;
  border-color: transparent transparent transparent #656565;
  float: left;
  margin-right: 3px;
  width: 10px;
}

https://jsfiddle.net/2ny35p94/3/


Chrome 58 - 同时显示三 Angular 形和标签:

Firefox 53 - 只显示三 Angular 形:

IE 11 - 仅显示标签:


关于如何使其跨浏览器兼容有什么建议吗?

最佳答案

您不能同时显示两者,因为您覆盖了默认值 ::before ,这正是浏览器所做的。 Chrome 似乎应用了它,但它不在标准规范中。因此,在这种情况下,Firefox 和 IE 可以正常工作。

<optgroup>标记由浏览器设置为这样的样式:

optgroup[label]::before {
     content: attr(label);
}

如果您覆盖 content属性(property),你无能为力。

我的建议是删除 content属性在您的代码上,但您将不得不修复其他相关问题。看截图:

firefox screenshot

看到它工作:

https://jsfiddle.net/2ny35p94/4/

关于css - 在 optgroup 标签上使用::before css 选择器时出现浏览器兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44367984/

相关文章:

css - 什么对 CSS 更快,通过 input[type ="whatever"] 或 #whatever 选择

javascript - 将表格中的文本替换为用户友好的文本

css - 如何使用下载的 Bootstrap 文件

css - 下拉菜单,调整浏览器大小时

css - webpack-hot reload - CSS 样式表不更新

html - 增加复选框大小

javascript - Ag-Grid - 如何为最后一行设置边框底部

带有链接作为背景图像的 html 元素 h1 在一行中显示它们

javascript - reactjs中如何改变tooltip容器的宽度?

javascript - jQuery 平滑滚动,当页面滚动到相应部分时添加一个 active 类来锚定