【发布时间】:2011-07-13 15:34:39
【问题描述】:
当相应的复选框被选中时,是否有一种非 JavaScript 的方式来改变标签的颜色?
【问题讨论】:
当相应的复选框被选中时,是否有一种非 JavaScript 的方式来改变标签的颜色?
【问题讨论】:
使用adjacent sibling combinator:
.check-with-label:checked + .label-for-check {
font-weight: bold;
}
<div>
<input type="checkbox" class="check-with-label" id="idinput" />
<label class="label-for-check" for="idinput">My Label</label>
</div>
【讨论】:
:checked selector 在 IE9 中都被列为支持。 Microsoft's own docs 确认。
<label> 跟随复选框时有效;如果<label> 标记包含复选框,那么似乎没有CSS 方法可以让它工作。 (例如,要更改围绕复选框和标签的框的背景颜色,请参阅jsfiddle.net/ttL49ce9)
这是使用:checked 伪类使表单更易于访问的示例。 :checked 伪类可以与隐藏输入及其可见标签一起使用,以构建交互式小部件,例如图像库。我为想要测试的人创建了片段。
input[type=checkbox] + label {
color: #ccc;
font-style: italic;
}
input[type=checkbox]:checked + label {
color: #f00;
font-style: normal;
}
<input type="checkbox" id="cb_name" name="cb_name">
<label for="cb_name">CSS is Awesome</label>
【讨论】:
我喜欢 Andrew 的建议,其实 CSS 规则只需:
:checked + label {
font-weight: bold;
}
我喜欢依赖 label 和 input 元素的隐式关联,所以我会这样做:
<label>
<input type="checkbox"/>
<span>Bah</span>
</label>
使用 CSS:
:checked + span {
font-weight: bold;
}
【讨论】:
:checked { box-shadow: 0 0 0 500px orange; }。您需要使用 z-indexes 以确保没有隐藏任何同级元素。
您不能仅使用 CSS 来做到这一点。使用 jQuery 你可以做到
HTML
<label id="lab">Checkbox</label>
<input id="check" type="checkbox" />
CSS
.highlight{
background:yellow;
}
jQuery
$('#check').click(function(){
$('#lab').toggleClass('highlight')
})
这适用于所有浏览器
【讨论】:
:checked pseudo selector 是 CSS3 功能。