【发布时间】:2016-12-22 00:39:12
【问题描述】:
当单选按钮被选中时,有没有办法为单选按钮的颜色变化添加标签?
我希望标签与hover 状态下的绿色相同,但我似乎不知道如何实现这一点?
label.btn span {
font-size: 16px;
}
i.fa {
font-size: 24px;
}
i.fa.fa-dot-circle-o {
font-size: 24px;
}
label input[type="radio"] {
color: #c8c8c8;
display: inline;
}
label input[type="radio"] ~ i.fa.fa-dot-circle-o {
display: none;
}
label input[type="radio"]:checked ~ i.fa.fa-circle-o {
display: none;
}
label input[type="radio"]:checked ~ i.fa.fa-dot-circle-o {
color: #78a025;
display: inline;
font-size: 24px;
}
label:hover input[type="radio"] ~ i.fa {
color: #78A025;
}
label input[type="checkbox"] ~ i.fa.fa-square-o {
color: #c8c8c8;
display: inline;
}
label input[type="checkbox"] ~ i.fa.fa-check-square-o {
display: none;
}
label input[type="checkbox"]:checked ~ i.fa.fa-square-o {
display: none;
}
label input[type="checkbox"]:checked ~ i.fa.fa-check-square-o {
color: #78A025;
display: inline;
}
label:hover input[type="checkbox"] ~ i.fa {
color: #78a025;
}
div[data-toggle="buttons"] label.active {
color: #78a025;
}
div[data-toggle="buttons"] label {
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: normal;
line-height: 2em;
text-align: left;
white-space: nowrap;
vertical-align: top;
cursor: pointer;
background-color: none;
border: 0px solid #c8c8c8;
border-radius: 3px;
color: #c8c8c8;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
div[data-toggle="buttons"] label:hover {
color: #78A025;
}
div[data-toggle="buttons"] label:active,
div[data-toggle="buttons"] label.active {
-webkit-box-shadow: none;
box-shadow: none;
}
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css" rel="stylesheet">
<div class="row">
<div class="col-xs-12">
<br>Vertical radio:
<br>
<div class="btn-group btn-group-vertical" data-toggle="buttons">
<label class="btn">
<input type="radio" name='gender1' checked><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i> <span> Male</span>
</label>
<label class="btn">
<input type="radio" name='gender1'><i class="fa fa-circle-o fa-2x"></i><i class="fa fa-dot-circle-o fa-2x"></i><span> Female</span>
</label>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<hr>Vertical checkbox:
<br>
<div class="btn-group btn-group-vertical" data-toggle="buttons">
<label class="btn">
<input type="checkbox" name='email1' checked><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i> <span> Marketing Email</span>
</label>
<label class="btn">
<input type="checkbox" name='email2'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Alert Email</span>
</label>
<label class="btn">
<input type="checkbox" name='email3'><i class="fa fa-square-o fa-2x"></i><i class="fa fa-check-square-o fa-2x"></i><span> Account Email</span>
</label>
</div>
</div>
</div>
这是一个用于演示目的的代码笔cdpn.io/ENMMOz
【问题讨论】:
-
不幸的是,我不认为这对于纯 CSS 是可能的。 CSS 不允许子元素直接更改其父元素,正如命名法 Cascading 样式表中所暗示的那样。
>用于直接后代选择器,~用于一般兄弟选择器,但我不知道有任何类型的“父”选择器。这当然可以通过一些简单的 JavaScript 来实现,但是我没有提供这个作为答案,我仍然想看看是否有人可以证明我在 CSS 位方面是不正确的。否则,你总是可以修改你的 HTML 以适应 CSS 可以 做的事情。 -
如果js是这里的答案,我不反对实现它。我只是不确定如何选择活动按钮的标签。
-
如果你愿意,我可以提供一个 jQuery 答案。
-
那真的很有帮助!
标签: html css css-selectors radio-button label