我有以下html:
使用CSS我为标签添加了背景色.
label { background-color:#333; color:#FFF; }
现在,我想在选中复选框时更改标签的背景颜色.我知道如何使用javascript,但有没有办法只使用CSS?
我已经看到了一些解决方案,但他们使用相邻的兄弟选择器,只有当复选框后面出现标签时才能使用.
我仍然希望在没有javascript的情况下解决这个问题,有没有人有线索?
更新:
因为我害怕,它不能这样做,所以我必须用JS做,或用不同的HTML结构实现相同的视觉效果.我想一次性设置标签和文本框的背景颜色,所以我可以使用一个解决方案,其中复选框绝对放在标签的顶部.好点PlantTheldea!
或者我可以将背景颜色应用于标签和复选框.
感谢大家!
在选中标签时,您无法仅通过CSS直接设置标签样式,但您可以设置复选框的同级样式.
http://jsfiddle.net/QdDpL/
HTML
<label> <input class="check" type="checkbox" /> <span class="label-text">Checkbox</label> </label>
CSS
label { background: yellow; } label .label-text { background: cyan; } label input.check:checked + .label-text { background: lime; }
您也可以使用浮动和填充来使复选框显示为好像它位于.label文本范围内.
有关兄弟选择器的浏览器支持,请参阅以下链接:http: //caniuse.com/css-sel2
或者如另一个答案所说的那样,如果它是复选框的兄弟,你可以设置标签的样式 - 但就像我的答案仍然不包含标签中的复选框一样.
你可以用这样的纯css实现这个,
<input type="checkbox" id="cb_1" value="cb_val" name="cb_name"> <label for="cb_1"> my checkbox text </label>
有了这个CSS,
label { background-color:#333; color:#FFF; } input[type="checkbox"]:checked + label { background: brown; }
的jsfiddle
记住
标签必须在复选框之后,因此您需要对其进行更多样式以保持您的外观.
这里有一个风格选项,可以让你拥有与你想要的相同的外观,新小提琴.这不涉及任何绝对的定位,只是一些诡计.