我写了一些代码来帮助" skin"复选框和单选按钮仅使用CSS。它非常,非常好......
....在Chrome中。
然而在FireFox和IE中,它只是......彻底失败了。而且我绝对不知道为什么。它的基本要点是它在内容之前使用:before
加载块,然后将其放在默认元素上。当然它将被一个精灵替换,但我必须首先使用outlaying行为。代码就是这样的;它在HTML中的布局方式是因为我使用的是Bootstrap
,而我只是坚持它将表单字段放在外面的方式。我也有一个小提琴来证明这个问题。
包含原始的LESS内容。
仅编译CSS
<div class="checkbox">
<label>
<input type="checkbox" value="">
<span style="font-size: 24px;">Option</span>
</label>
</div>
.checkbox, .radio {
position: relative;
& + .checkbox {
margin-top: 10px;
&.pull-left {
left: 6px;
}
}
& + .radio {
margin-top: 10px;
left: 20px;
}
input[type="checkbox"] {
&:active, &:hover, &:focus {
&:before,
&::before {
background: yellow;
}
}
&:checked,
&:active:checked,
&:hover:checked,
&:focus:checked {
&:before, &::before {
background: green;
}
}
}
input[type="radio"] {
&:active:before,
&:hover:before,
&:focus:before {
background: yellow;
}
&:checked:before,
&:active:checked:before,
&:hover:checked:before,
&:focus:checked:before {
background: green;
}
}
input[type="radio"] {
&:before, &::before {
opacity: 1;
position: absolute;
content: "";
display: block;
background: black;
height: 24px;
width: 24px;
top: 2px;
}
}
input[type="checkbox"] {
&:before, &::before {
opacity: 1;
position: absolute;
content: "";
display: block;
background: black;
height: 24px;
width: 24px;
top: 2px;
}
}
label {
line-height: 24px;
padding-left: 10px;
}
}
答案 0 :(得分:1)
遗憾的是,旧的浏览器无法设置单选按钮的样式。你应该做的是使用像http://fronteed.com/iCheck/这样的插件,它会自动创建基于div的复选框,您可以自己设置样式并单击与实际复选框的同步。