【问题标题】:Style the first select option in Bootstrap 3在 Bootstrap 3 中设置第一个选择选项的样式
【发布时间】:2015-12-24 05:25:18
【问题描述】:

我正在尝试更改具有 Bootstrap 的 form-control 类的第一个选择选项的字体颜色,如下所示:

<select class="form-control">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

我尝试使用first-child 属性对其进行样式设置,如下所示,但它将所有内容都涂成红色:

select.form-control { color: red; }
select.form-control option { color: black; }
select.form-control option:first-child { color: red; }

我什至尝试过内联样式,但它仍然无法覆盖 Bootstrap 的 css:

<select class="form-control">
  <option style="color: red;" color="red">1</option>
  <option>2</option>
  <option>3</option>
</select>

有趣的是,当第一个元素是 multiple 样式时,css 正确地设置了第一个元素的样式,但这不是我需要的:

<select multiple class="form-control">
  <option>1</option>
  <option>2</option>
  <option>3</option>
</select>

这是一个复制此代码的代码笔:http://codepen.io/anon/pen/MKjYjq

更新 1:

第一个元素是指 select 中的第一个选项(即&lt;option&gt;1&lt;/option&gt;)。我希望它是红色的,其余的是黑色的。

与原始 Codepen 报告的一些 cmets 不同,即使是内联方法也不适用于 Mac 上的 Chrome 47、Safari 9 和 Firefox 42:

所需的选项是上图中的数字2(连同其下方的其他选项)为黑色,但选项1 为红色。

【问题讨论】:

  • 它看起来像你描述的那样工作!你要什么?
  • 请解释一下这不是你想要的? jsfiddle.net/oa9wj80x/1
  • 是的,我只是将 select.form-control { color: red; } 更改为 select.form-control { color: blue; } 并且它正在工作。
  • @AdamBuchananSmith 也许它取决于浏览器?当我在 Safari 中提琴时,所有选项都是黑色的。和铬。还有火狐。
  • @AdamBuchananSmith Chrome for Mac 47.0.2526 和 Firefox Dev edition for Mac 44.0a2。

标签: css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

基于 Javascript 的解决方案 (http://codepen.io/anon/pen/ZQpGpY)

标记:

<select class="form-control">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>

CSS:

select.form-control.first-option-selected {
  color: red;
}

select.form-control > option {
  color: black;
}

Javascript(使用jQuery是为了方便):

$(function () {
  var selectElement = $('select.form-control');

  function ifFirstOptionSelectedMakeItRed() {
    if (selectElement[0].selectedIndex === 0) {
      selectElement.addClass('first-option-selected');
    } else {
      selectElement.removeClass('first-option-selected');
    }
  }

  ifFirstOptionSelectedMakeItRed();

  selectElement.on('change', function () {
    ifFirstOptionSelectedMakeItRed();
  })
});

我对这个解决方案的推理是这样的:

【讨论】:

  • 最佳解决方案,因为不依赖于选项的值。
【解决方案2】:

这来自您自己的代码:https://jsfiddle.net/oa9wj80x/2/

如果这不是你要问的,那么 IDK 哈哈

<select class="form-control">
  <option style="color: red;">1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

编辑 1

或者您正在寻找这种效果? https://jsfiddle.net/oa9wj80x/3/

edit2

我认为这就是你想要做的? https://jsfiddle.net/oa9wj80x/5/

<select id="slct" onchange="change()" class="form-control">
  <option id="opt1" value="1">1</option>
  <option id="opt2" value="2">2</option>
  <option id="opt3" value="3">3</option>
  <option id="opt4" value="4">4</option>
  <option id="opt5" value="5">5</option>
</select>
<script>
function change(){
    var x = document.getElementById("slct").value;

  if(x > 1){
    document.getElementById("slct").style.color = "black";
  }
  else{
    document.getElementById("slct").style.color = "red";
  }
}
</script>

【讨论】:

  • 不幸的是,您的解决方案仍然无法在我的 Mac 上运行最新的 Chrome 47、Safari 9 和 Mac 上的 Firefox 42。在您的第一个 jsfiddle 中,所有选项都呈现为黑色,而在第二个 jsfiddle 中,所有选项都是黑色。所需的行为是只有选项 1 为红色,其余为黑色。如果你愿意,我可以提供截图。
  • @SBBS 感谢您的澄清,我现在将调整我的答案
  • @SBBS 看看 edit 2 这就是你要找的吗?
  • LOL 我很困惑 :) 很高兴看到我们让它工作了......终于
【解决方案3】:
<p>Even inline doesn't work:</p>
<select class="form-control">
  <option style="color:red;">1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>

这是无需任何 css 更改即可工作。

【讨论】:

  • 很遗憾,您的解决方案在 Mac 上的最新 Chrome 47、Safari 9 和 Firefox 42 中无法在我的 Mac 上运行。所有选项都呈现为黑色,而所需的行为是只有选项 1 为红色,其余为黑色。如果您愿意,我可以提供屏幕截图。
【解决方案4】:

浏览后我发现了一个适用于现代浏览器的纯 CSS 解决方案:

select:required:invalid {
  color: red;
}
option[value=""][disabled] {
  display: none;
}
option {
  color: black;
}

HTML

<select required class="form-control">
  <option value="" disabled selected>1</option>
  <option value="1">2</option>
  <option value="2">3</option>
</select>

来源:https://stackoverflow.com/a/29806043

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多