Css 在IE中将复选框的输入样式重置为默认值

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

我有一个CSS规则用于如下输入:

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()
伪选择器,尽管它很有用。它具有非常高的特异性,如果需要,很难在以后覆盖。只要我的两分钱。