html - 具有多个标签的已选中单选按钮的 CSS

标签 html css

选中此单选按钮时,单选按钮上的第二个标 checkout 现 CSS 问题。我已经发现可以在标签标签中使用“for”来创建第二个(和第三个)标签。不可能将所有内容都分组到一个标签中。

选中单选按钮时如何更改第二个标签的背景?

我的(简化的)代码如下,第一个标签有效,第二个标签无效。

.radioclass:checked + label {
  background-color: cyan;
}
<div class="row">
  <div class="col-sm-4">
    <input class="radioclass" id="id_radiobtn1" type="radio" name="radiobtn1" value="1">
    <label for="id_radiobtn1">first label</label>
  </div>
  <div class="col-sm-4">
    <label for="id_radiobtn1">second label</label>
  </div>
</div>

最佳答案

css 中的 + 选择器表示“直接兄弟”,即输入后的下一个元素必须是标签。这只会选择直系 sibling 。

另一种方法是 ~,这意味着“任何兄弟”并在输入后定位任何标签。

在这两种情况下,元素(输入和标签)都在相同的 dom 级别。没有办法遍历向上 dom,捕获同胞,然后是标签——这就是你试图用提供的 html 做的。

如果您能够更改 html,则要么将输入放在两个 div 之外,要么将两个 label 放在同一个 div(输入后)。

.radioclass:checked ~ div label {
  background-color: cyan;
}
<div class="row">
  <input class="radioclass" id="id_radiobtn1" type="radio" name="radiobtn1" value="1">
  <div class="col-sm-4">
    <label for="id_radiobtn1">first label</label>
  </div>
  <div class="col-sm-4">
    <label for="id_radiobtn1">second label</label>
  </div>
</div>

.radioclass:checked ~ label {
  background-color: cyan;
}
<div class="row">
  <div class="col-sm-4">
    <input class="radioclass" id="id_radiobtn1" type="radio" name="radiobtn1" value="1">
    <label for="id_radiobtn1">first label</label>
    <label for="id_radiobtn1">second label</label>
  </div>
</div>

如果您不能更改 html,那么 JS 是唯一的其他方法(出于演示目的,我已将输入更改为复选框):

$('input').on('change', function(){
  var func = 'removeClass';
  if($(this).is(':checked')) {
    func = 'addClass';
  }
  
  $('label[for="'+$(this).attr('id')+'"]')[func]('checked');
});
label.checked {
  background-color: cyan;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="row">
  <div class="col-sm-4">
    <input class="radioclass" id="id_radiobtn1" type="checkbox" name="radiobtn1" value="1">
    <label for="id_radiobtn1">first label</label>
  </div>
  <div class="col-sm-4">
    <label for="id_radiobtn1">second label</label>
  </div>
</div>

关于html - 具有多个标签的已选中单选按钮的 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029617/

相关文章:

jquery - 我的幻灯片放映不工作而且我的页脚不合适

html - 居中谷歌地图 iframe

jquery - UI 小部件禁用

html - 如何使用 html 或 css 为音频制作一个切换按钮?

javascript - 如何将 div 高度设置为用户显示器分辨率的 100%?

html - 在 IE8 上禁用 CSS3 复选框

javascript - 就像所有 CSS 都是有效的 SCSS 一样,所有 JS 也是有效的 TS 吗?

css - react 图 GL : map not taking the entire width

javascript - 需要从 JSON 文件获取名称数据

html - 生成 html 时,是否包括换行符和制表符等格式?