2013-11-22 56 views
1

当复选框被选中但标签位于复选框之前时,我想将样式应用于标签。如何在选中复选框之前选择标签?

我的代码是:

<label class="label" for="main-checkbox">LABEL</label><br /> 
<input type="checkbox" id="main-checkbox"> 

我一直在与CSS选择奋力做到这一点。

+0

“选择标签”是什么意思? –

+0

当复选框被选中时,我想将样式应用到标签 –

+0

如果标签在之前,您不仅可以使用CSS ... – DaniP

回答

0
<p><input type="checkbox" name="main-checkbox"> 
<label for="main-checkbox"><span></span></label></p> 

然后使用CSS

p { 
    position: relative; 
} 

p > input[type="checkbox"] { 
    cursor: pointer; 
    position: absolute; 
    left: 3px; 
    top: 0; 
    z-index: 2; 
    width: 26px; 
    height: 26px; 
    opacity: 0; 
    vertical-align: middle; 
} 

p > input[type="checkbox"] +label { 
    vertical-align: middle; 
    background-color: #555; 
    height: 35px; 
    width: 35px; 
    margin-right: 16px; 
    display: inline-block; 
    z-index: 1; 
    position: relative; 
} 

label>span:before { 
    text-indent: 0; 
    font-size: 30px; 
    color: #fff; 
    position: absolute; 
    top: -1px; 
    left: 7px; 
} 

label>span:after { 
    display: none; 
} 

p > input[type="checkbox"]:checked+label:after { 
    content: 'B'; 
    text-indent: 0; 
    font-size: 30px; 
    color: #F0F; 
    position: absolute; 
    top: -1px; 
    left: 7px; 
} 

p > input[type="checkbox"] +label:after { 
    content: 'A'; 
    text-indent: 0; 
    font-size: 30px; 
    color: #F0F; 
    position: absolute; 
    top: -1px; 
    left: 7px; 
} 

检查出的jsfiddle我做:http://jsfiddle.net/rzTFP/

我把复选框变成可点击的一般框。

当标签位于<input>后面时,它可以正常工作,但可以随时随地使用它。

+0

这就是说,标签位于输入之上,因为内容正在生成,而我只能控制样式。如果没有办法在CSS中完成,那么这就够公平了 –

0

您可以修改“已检查”状态......但它不适用于旧版浏览器。

http://jsfiddle.net/CjpmP/

HTML

<div> 
    <input type="checkbox" id="check" class="check-with-label" /> 
    <label for="check" class="label-for-check">My Label</label> 
<div> 

CSS

.check-with-label:checked + .label-for-check { 
    font-weight: bold; 
} 

我建议使用javascript,让您使用更传统的CSS规则,虽然... http://jsfiddle.net/MGVHX/1/