我发现了一篇SO文章,演示了如何将单选按钮更改为可点击按钮here,这些按钮在Chrome和Safari中很有魅力。但是,Firefox无法正确呈现CSS。文章提到解决方案在IE中不起作用,只是不确定这是否意味着它也不会在Firefox中运行。
https://jsfiddle.net/eqyms7vc/2/
HTML
<div id="service_type">
<input type="radio" name="service_type" id="service_type_1" value="Option 1">
<input type="radio" name="service_type" id="service_type_2" value="Option 2">
</div>
CSS
#service_type .container {
margin: 10px;
}
#service_type label {
padding: 6px 12px;
color: #fff;
}
#service_type input {
-webkit-appearance:none;
height:50px;
width:150px;
padding:10px;
color:white;
margin:5px;
font-size: 18px;
text-align: center;
}
#service_type input:hover {
font-weight: bold;
}
#service_type input#service_type_1 {
background:#336600;
}
#service_type input#service_type_2 {
background:#0066ff;
}
#service_type input#service_type_1:before, input#service_type_1::before {
content:"Option 1";
}
#service_type input:before, input::before {
line-height:30px;
width:100%;
text-align:center;
}
#service_type input#service_type_2:before, input#service_type_2::before {
content:"Option 2";
}
#service_type .selected {
background-color: #000;
}
如果没有办法让Firefox正确渲染上面的CSS,是否可以只向Firefox浏览器显示单选按钮标签?
谢谢!
答案 0 :(得分:3)
您可以隐藏radiobutton,并使用标签:before伪元素来设置替代的radiobutton样式。此示例仅为css,但如果需要,您还可以使用背景图像。
input[type=radio]{
display:none;
}
input[type=radio] + label:before{
content: '•';
display:inline-block;
border-radius: 10px;
width: 16px;
height:16px;
background:#8cf;
color:#8cf;
border: 2px solid #f00;
line-height: 15px;
text-align: center;
font-size:25px;
margin-right: 5px;
}
input[type=radio]:checked + label:before{
color: #fff;
}
<input type="radio" name="group" id="radio1" /><label for="radio1">radiobutton</label><br />
<input type="radio" name="group" id="radio2" /><label for="radio2">radiobutton</label><br />
<input type="radio" name="group" id="radio3" /><label for="radio3">radiobutton</label><br />
<input type="radio" name="group" id="radio4" /><label for="radio4">radiobutton</label>
答案 1 :(得分:1)
试试这个:
-moz-appearance:none;
在:
#service_type input {
-webkit-appearance:none;
-moz-appearance:none;
height:50px;
width:150px;
padding:10px;
color:white;
margin:5px;
font-size: 18px;
text-align: center;}
答案 2 :(得分:0)
不幸的是,无线电输入以及选择列表,文件上传和复选框都不允许通过CSS进行完全控制。它似乎取决于您可以更改的样式。
如果您只是想改变整体的输入风格,我之前已做过类似的事情。只需隐藏输入并将其包装在标签中即可。然后添加一些兄弟元素来处理你想要的样式。
#fancyoptions input{
display:none;
}
#fancyoptions label span{
padding:10px;
margin:5px;
border:1px solid black;
background-color:#00ff00;
}
#fancyoptions input:checked + span{
background-color:#ff0000;
}
<div id="fancyoptions">
<br/>
<label>
<input type="radio" name="thing" value="Option 1">
<span>Option 1</span>
</label>
<label>
<input type="radio" name="thing" value="Option 2">
<span>Option 2</span>
</label>
</div>