可以设置 select <option> 下拉菜单的样式了吗? (截至 2017 年)

Can a select <option> dropdown be styled yet? (as of 2017)

一个简单的问题,对于除 Mozilla Firefox 之外的任何浏览器似乎都没有真正的解决方案。

从 2017 年开始,我们可以设置下拉菜单和 <select> 字段的 <option> 元素的样式吗?

最好只 CSS,但 JavaScript 解决方案也可以。

select {
  outline: 0;
}

option {
  outline: 0;
  padding: 4px 8px;
}

option.yes {
  border: 1px solid green;
}

option.yes_but_no {
  border: 1px solid orange;
}

option.no {
  border: 1px solid red;
}
<select>
  <option>Choose an answer</option>
  <option class="yes">Yes, we finally can!</option>
  <option class="yes_but_no">Yes, but only in Firefox</option>
  <option class="no">No, we still can't...</option>
</select>

你能不能把 div 改成

    #option1 { color: blue; background-color: red; }

    hover:#option1 { background-color: white; }

我不太确定悬停是否有效,但你可以这样做

    <option class="no" div="option1";>No, we still can't...</option>

您可以使用 jquery select2 执行此操作。 select2 中有很多功能,而不是简单的 select

$("select").select2({
  templateResult: function (data, container) {
    if (data.element) {
      $(container).addClass($(data.element).attr("class"));
    }
    return data.text;
  }
});
.yellow { background-color: yellow; }
.blue { background-color: blue }
.green { background-color: green; }
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.js"></script>

<select class="select2">
  <option value="AL" class="yellow">Alabama</option>
  <option value="AK" class="blue">Alaska</option>
  <option value="AZ" class="green">Arizona</option>
</select>