Css 在IE中将复选框的输入样式重置为默认值
我有一个CSS规则用于如下输入:Css 在IE中将复选框的输入样式重置为默认值,css,internet-explorer,html,checkbox,Css,Internet Explorer,Html,Checkbox,我有一个CSS规则用于如下输入: input { border: 1px solid black; } <input type="checkbox" class="checkbox" /> 问题是IE(已在IE 8和9上测试)和Opera中的复选框也继承了此边框,它们不显示默认样式,而是显示具有白色背景和黑色复选框的自定义模式,如下所示: input { border: 1px solid black; } <input type="checkbox" c
input {
border: 1px solid black;
}
<input type="checkbox" class="checkbox" />
问题是IE(已在IE 8和9上测试)和Opera中的复选框也继承了此边框,它们不显示默认样式,而是显示具有白色背景和黑色复选框的自定义模式,如下所示:
input {
border: 1px solid black;
}
<input type="checkbox" class="checkbox" />
与本机风格不同,例如在Windows 7中,渐变灰色背景和深蓝色格子显示在Chrome和Firefox中:
我希望在CSS中保留输入规则的边框,但我有一个名为“checkbox”的类,我将它放在所有复选框上,如下所示:
input {
border: 1px solid black;
}
<input type="checkbox" class="checkbox" />
这在Opera中可以恢复为默认样式,但在IE中不起作用。我还尝试了许多不同的组合:
.checkbox {
border: 1 none transparent;
}
但这些似乎都没有重置为IE中复选框的默认样式
是否可以在不删除输入规则边框的情况下还原IE do中复选框的默认样式,而是使用.checkbox类?在许多浏览器中,无法将复选框重置为默认的本机样式 这可能就是CSS重置通常不包含此效果规则的原因:
input {
border: 0;
}
最兼容的技术是这样做:
input[type="text"], input[type="password"] {
border: 1px solid black;
}
并明确列出您希望设置样式的输入的每种类型
见:
这将适用于IE7+和所有现代浏览器
您还可以使用not()
CSS3伪类更灵活地实现这一点,但这在IE8中不起作用,IE8对我来说是一个破坏者:
input:not([type="checkbox"]) {
border: 1px solid black;
}
难道你不能包含ie8 js来让ie8识别not()CSS3伪类吗
如果您仍然想知道是否有一种方法可以设置复选框的样式,并使其在大多数浏览器(包括IE)中工作。您只需要一些css,只需要一点javascript和jquery。在IE6中工作+
首先让你的复选框像这样。。仅添加一个标签元素,其中for元素指向复选框的id
<input id="mycheckbox" type="checkbox">
<label id="mylabel" for="mycheckbox"></label>
使用标签控件绘制复选框,我制作了一个:
#mylabel {
float: left;
margin-top: 11px;
background-color: #fff;
border: 1px solid #000;
display: block;
height: 12px;
width: 12px;
margin-right: 10px;
-webkit-border-top-right-radius: 20px;
-webkit-border-bottom-right-radius: 20px;
-moz-border-radius-topright: 20px;
-moz-border-radius-bottomright: 20px;
border-top-right-radius: 20px;
border-bottom-right-radius: 20px;
background-position: left center;
}
选中该框时,必须创建外观:
#mylabel.checked {
background-color: #808080;
}
最后是一些jquery:
$(document).ready(function () {
$("#mycheckbox").change(function () {
if ($("#mycheckbox").is(":checked")) {
$("#mylabel").addClass("checked", "checked");
} else {
$("#mylabel").removeClass("checked");
}})
});
不要忘记包括jquery库(将其放在head标记中):
查看小提琴,看看它在起作用:
好吧,我差点就想到IE会这么做,但谢谢你的回答。如果没有其他人有更好的解决方案,我会接受。我必须支持IE6,所以这是一个问题。我不喜欢:not()
伪选择器,尽管它很有用。它具有非常高的特异性,如果需要,很难在以后覆盖。只要我的两分钱。