jquery - 当 :checked 时,使用单选按钮输入上的 CSS 更改背景颜色

标签 jquery html css

问题

尝试更改样式类似于按钮的单选输入的背景颜色,以便当用户单击它时,颜色将从灰色变为黄色。

代码片段

 /*----------------------------------
        SIDEBAR
        ----------------------------------*/
 input[type=radio],
 input[type=checkbox] {
   display: none;
 }
 form input[type="radio"]:checked + label {
   background-color: yellow;
 }
 label {
   display: block;
   appearance: button;
   -webkit-appearance: button;
   -moz-appearance: button;
   -ms-appearance: button;
   font-family: 'Roboto', sans-serif;
   font-weight: 400;
   background: #DDDDDD;
   font-size: 1.6rem;
   color: #111111;
   border: 2px solid #AAAAAA;
   padding: 8px;
   width: 40%;
   margin: 0 auto;
   text-align: center;
   &: hover {
     cursor: pointer;
   }
   &: checked {
     background-color: $yellow;
   }
 }
<form>
  <label for="">
    <input type="radio" class="button" id="Male" name="gender">Male</input>
  </label>
  <label for="">
    <input type="radio" class="button" id="Female" name="gender">Female</input>
  </label>
</form>

最佳答案

有两种方法可以解决这个问题。一种是纯 CSS 解决方案。如果您可以控制 HTML 结构,那么您应该这样做:

解决方案 1:CSS 解决方案

只需修改您的HTML,如下所示:

<form>
  <input type="radio" class="button" id="Male" name="gender"></input>
  <label for="Male">Male</label>
  <input type="radio" class="button" id="Female" name="gender"></input>
  <label for="Female">Female</label>
</form>

保持相同的CSS:

/*----------------------------------
        SIDEBAR
        ----------------------------------*/
 input[type=radio],
 input[type=checkbox] {
   display: none;
 }
 form input[type="radio"]:checked + label {
   background-color: yellow;
 }
 label {
   display: block;
   appearance: button;
   -webkit-appearance: button;
   -moz-appearance: button;
   -ms-appearance: button;
   font-family: 'Roboto', sans-serif;
   font-weight: 400;
   background: #DDDDDD;
   font-size: 1.6rem;
   color: #111111;
   border: 2px solid #AAAAAA;
   padding: 8px;
   width: 40%;
   margin: 0 auto;
   text-align: center;
}

您可以在这里看到 -> http://jsfiddle.net/4pf9cds3/

<小时/>

解决方案 2:jQuery 解决方案

如果您无法控制 HTML,假设您的 HTML 是由第三方提供的(尽管我怀疑情况是否如此),则可以使用此解决方案:

HTML:

<form>
    <label for="Male">
        <input type="radio" class="button" id="Male" name="gender" >Male</input>
    </label>
    <label for="Female">
        <input type="radio" class="button" id="Female" name="gender">Female</input>
    </label>
</form>

jQuery:

$(document).ready(function() {
    $('label').click(function() {
        $('label').removeClass('yellowBackground');
        $(this).addClass('yellowBackground');
    });
});

CSS:

 /*----------------------------------
    SIDEBAR
    ----------------------------------*/
input[type=radio], input[type=checkbox] {
    display: none;
}

label {
    display: block;
    appearance: button;
    -webkit-appearance: button;
    -moz-appearance: button;
    -ms-appearance: button;
    font-family:'Roboto', sans-serif;
    font-weight: 400;
    background: #DDDDDD;
    font-size: 1.6rem;
    color: #111111;
    border: 2px solid #AAAAAA;
    padding: 8px;
    width: 40%;
    margin: 0 auto;
    text-align: center;
    transition: all 0.7s ease-in-out;
}

.yellowBackground {
    background-color:yellow;
}

您可以在这里看到 -> http://jsfiddle.net/rmd1fa1x/

希望这有帮助!!!

关于jquery - 当 :checked 时,使用单选按钮输入上的 CSS 更改背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554707/

相关文章:

jquery - 为什么网站托管时设计会发生变化?

javascript - 使用站点更新刷新缓存

javascript - firefox 6 中的 mac 魔术鼠标水平滑动/滚动问题

jquery - NPM Datatable Excel 按钮不显示

php - 如何从数据库中获取所有图像

html - Div 在移动设备上覆盖我的输入

css - 如何将屏幕右侧的文本移动到屏幕左侧

jquery - 如何使用 jQuery 检查 div 内的段落数并删除其中的一些?

javascript - 如何在成功回调函数中获取$.ajax()请求参数?

html - 隐藏在后面的下拉菜单