设置Bootstrap 3

时间:2015-12-23 18:44:25

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

我尝试更改具有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>

有趣的是,当css是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中的第一个选项(即<option>1</option>)。我喜欢它是红色的,其余的都是黑色的。

与原始Codepen报告的一些评论不同,即使是内联方法在Mac上的Chrome 47,Safari 9和Firefox 42中也不起作用:

enter image description here enter image description here

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

4 个答案:

答案 0 :(得分:3)

基于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();
  })
});

我对此解决方案的理由是:

答案 1 :(得分:2)

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

如果那不是你要问的那么IDK​​ lol

<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>

答案 2 :(得分:0)

<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更改。

答案 3 :(得分:0)

浏览过后,我发现了一种仅适用于现代浏览器的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