选择单选按钮时更改单选按钮标签的颜色?

这个问题在这里已经有了答案:

  • 有没有一个CSS父母选择器? 26个答案

  • 您无法设置label的样式(因为我们在CSS中没有父级选择器),但是您可以设置checkbox radiobuttoncheckbox的文本样式 - 预期结果 - 使用以下代码:

    label input[type="radio"]:checked ~ span {
      color: #78a025;
    }
    label input[type="checkbox"]:checked ~ span {
      color: #78a025;
    }
    

    参见下面的演示:

    label.btn span {
      font-size: 16px;
    }
    i.fa {
      font-size: 24px;
    }
    i.fa.fa-dot-circle-o {
      font-size: 24px;
    }
    label input[type="radio"] {
      color: #c8c8c8;
      display: inline;
    }
    label input[type="radio"] ~ i.fa.fa-dot-circle-o {
      display: none;
    }
    label input[type="radio"]:checked ~ i.fa.fa-circle-o {
      display: none;
    }
    label input[type="radio"]:checked ~ i.fa.fa-dot-circle-o {
      color: #78a025;
      display: inline;
      font-size: 24px;
    }
    label:hover input[type="radio"] ~ i.fa {
      color: #78A025;
    }
    label input[type="checkbox"] ~ i.fa.fa-square-o {
      color: #c8c8c8;
      display: inline;
    }
    label input[type="checkbox"] ~ i.fa.fa-check-square-o {
      display: none;
    }
    label input[type="checkbox"]:checked ~ i.fa.fa-square-o {
      display: none;
    }
    label input[type="checkbox"]:checked ~ i.fa.fa-check-square-o {
      color: #78A025;
      display: inline;
    }
    label:hover input[type="checkbox"] ~ i.fa {
      color: #78a025;
    }
    div[data-toggle="buttons"] label.active {
      color: #78a025;
    }
    div[data-toggle="buttons"] label {
      display: inline-block;
      padding: 6px 12px;
      margin-bottom: 0;
      font-size: 14px;
      font-weight: normal;
      line-height: 2em;
      text-align: left;
      white-space: nowrap;
      vertical-align: top;
      cursor: pointer;
      background-color: none;
      border: 0px solid #c8c8c8;
      border-radius: 3px;
      color: #c8c8c8;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      -o-user-select: none;
      user-select: none;
    }
    div[data-toggle="buttons"] label:hover {
      color: #78A025;
    }
    div[data-toggle="buttons"] label:active,
    div[data-toggle="buttons"] label.active {
      -webkit-box-shadow: none;
      box-shadow: none;
    }
    label input[type="radio"]:checked ~ span {
      color: #78a025;
    }
    label input[type="checkbox"]:checked ~ span {
      color: #78a025;
    }
    <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet">
    
    <div class="row">
      <div class="col-xs-12">
        <br>Vertical radio:
        <br>
        <div class="btn-group btn-group-vertical" data-toggle="buttons">
          <label class="btn">
            <input type="radio" name='gender1' checked><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i>  <span>  Male</span>
          </label>
          <label class="btn">
            <input type="radio" name='gender1'><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i><span> Female</span>
          </label>
        </div>
    
      </div>
    </div>
    
    <div class="row">
      <div class="col-xs-12">
        <hr>Vertical checkbox:
        <br>
        <div class="btn-group btn-group-vertical" data-toggle="buttons">
          <label class="btn">
            <input type="checkbox" name='email1' checked><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i>  <span> Marketing Email</span>
          </label>
          <label class="btn">
            <input type="checkbox" name='email2'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Alert Email</span>
          </label>
          <label class="btn">
            <input type="checkbox" name='email3'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Account Email</span>
          </label>
        </div>
    
    
      </div>
    </div>

    编辑:哇! 我完全错过了这样一个事实,即您的文本跨度实际上在标签本身内,所以您的解决方案可以很好地在CSS中实现。 而不是在这里提供你的答案,似乎Kukkuz的答案已经完成了!

    我将在这里留下这个答案,这样你就可以看到jQuery解决方案的语法可能是什么样子,但我肯定会建议尽可能使用纯CSS!


    正如你在评论中提到的,你可以使用jQuery解决方案,所以下面我提供了一个。

    这里是一个例子:https://jsfiddle.net/j7n9zyaj/

    代码:

    //When a checkbox/radio is clicked...
    $('input[type=radio], input[type=checkbox]').on("click", function() {
    
        var $t = $(this);
    
        //If it's checked
        if ($t.is(':checked')) {
            //Add the green class to the parent
            $t.parent().addClass("greenText");
        } else {
            //Remove the green class from the parent
            $t.parent().removeClass("greenText");
        }
    
    });
    

    你只需要添加这个简单的类到你的CSS:

    .greenText {
        color: #78A025 !important;
    }
    

    尝试更改label时使用span更改颜色,请使用~运算符,如:

    label input[type="radio"]:checked ~ span {
        color: #78a025;
    }
    
    label input[type="checkbox"]:checked ~ span {
        color: #78a025;
    }
    

    看看下面的代码片段:

    label.btn span {
      font-size: 16px ;
    }
    i.fa{
      font-size: 24px;
    }
    i.fa.fa-dot-circle-o{
      font-size: 24px;
    }
    
    label input[type="radio"]{
        color: #c8c8c8;    display: inline;
    }
    label input[type="radio"] ~ i.fa.fa-dot-circle-o{
        display: none;
    }
    label input[type="radio"]:checked ~ i.fa.fa-circle-o{
        display: none;
    }
    label input[type="radio"]:checked ~ i.fa.fa-dot-circle-o{
        color: #78a025;    
        display: inline;
        font-size: 24px;
    }
    
    label input[type="radio"]:checked ~ span {
        color: #78a025;
    }
    
    
    
    label:hover input[type="radio"] ~ i.fa {
    color: #78A025;
    }
    
    label input[type="checkbox"] ~ i.fa.fa-square-o{
        color: #c8c8c8;    display: inline;
    }
    label input[type="checkbox"] ~ i.fa.fa-check-square-o{
        display: none;
    }
    label input[type="checkbox"]:checked ~ i.fa.fa-square-o{
        display: none;
    }
    label input[type="checkbox"]:checked ~ i.fa.fa-check-square-o{
        color: #78A025;    display: inline;
    }
    label:hover input[type="checkbox"] ~ i.fa {
    color: #78a025;
    }
    
    div[data-toggle="buttons"] label.active{
        color: #78a025;
    }
    
    label input[type="checkbox"]:checked ~ span {
        color: #78a025;
    }
    
    div[data-toggle="buttons"] label {
    display: inline-block;
    padding: 6px 12px;
    margin-bottom: 0;
    font-size: 14px;
    font-weight: normal;
    line-height: 2em;
    text-align: left;
    white-space: nowrap;
    vertical-align: top;
    cursor: pointer;
    background-color: none;
    border: 0px solid 
    #c8c8c8;
    border-radius: 3px;
    color: #c8c8c8;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    -o-user-select: none;
    user-select: none;
    }
    
    div[data-toggle="buttons"] label:hover {
    color: #78A025;
    }
    
    div[data-toggle="buttons"] label:active, div[data-toggle="buttons"] label.active {
    -webkit-box-shadow: none;
    box-shadow: none;
    }
    <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet">  
    
    <div class="row">
        <div class="col-xs-12">
          <br> Vertical radio:
          <br>
          <div class="btn-group btn-group-vertical" data-toggle="buttons">
            <label class="btn">
              <input type="radio" name='gender1' checked><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i> <span>  Male</span>
            </label>
            <label class="btn">
              <input type="radio" name='gender1'><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i><span> Female</span>
            </label>
          </div>
    
        </div>
      </div>
    
      <div class="row">
        <div class="col-xs-12">
          <hr> Vertical checkbox:
          <br>
          <div class="btn-group btn-group-vertical" data-toggle="buttons">
            <label class="btn">
              <input type="checkbox" name='email1' checked><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i> <span> Marketing Email</span>
            </label>
            <label class="btn">
              <input type="checkbox" name='email2'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Alert Email</span>
            </label>
            <label class="btn">
              <input type="checkbox" name='email3'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Account Email</span>
            </label>
          </div>
    
    
        </div>
      </div>
    链接地址: http://www.djcxy.com/p/22829.html

    上一篇: Change radio button label's color when radio button is selected?

    下一篇: CSS: how to select parent's sibling