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

时间:2011-03-18 14:01:50

标签: css internet-explorer html5 checkbox

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

input {
    border: 1px solid black;
}

问题是IE中的复选框(已经在IE 8和9上测试过)和Opera也继承了这个边框,而不是显示默认样式,它们显示自定义模式的复选框,白色背景和黑色检查如下:

custom checkbox

而不是原生样式,例如在Windows 7中使用渐变灰色背景和Chrome和Firefox中显示的深蓝色检查:

default checkbox

我想在CSS中保留输入规则的边框,但我有一个名为“checkbox”的类,我把它放在所有复选框上,如下所示:

<input type="checkbox" class="checkbox" />

有没有办法用.checkbox规则重置边框样式?

我试过了:

.checkbox {
    border: none;
}

在Opera中可以恢复默认样式,但不能在IE中使用。我也尝试了许多不同的组合:

.checkbox {
    border: 1 none transparent;
}

但这些似乎都没有重置为IE中复选框的默认样式。

是否可以为IE中的复选框恢复默认样式,而不删除输入规则的边框,而是使用.checkbox类?

3 个答案:

答案 0 :(得分:11)

在许多浏览器中,无法将复选框重置为默认的原生样式。

这可能是CSS重置通常不包含此规则的原因:

input {
    border: 0;
}

最兼容的技术是这样做:

input[type="text"], input[type="password"] {
    border: 1px solid black;
}

并明确列出您希望设置样式的type的每个input

请参阅:http://jsfiddle.net/EPpJ9/

这适用于IE7 +和所有现代浏览器。

你也可以使用not() CSS3伪类更加巧妙地做到这一点,但这在IE8中不起作用,IE8对我来说是一个交易破坏者:

input:not([type="checkbox"]) {
    border: 1px solid black;
}

答案 1 :(得分:1)

难道你不能包括ie8-js让IE8识别not()CSS3伪类吗?

http://code.google.com/p/ie7-js/

<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->

答案 2 :(得分:1)

如果您仍然想知道确实有一种方式来设置复选框样式并使其适用于包括IE在内的大多数浏览器。而你只需要一些CSS,只需要一点点javascript和jquery。适用于IE6 +

首先使你的复选框像这样..只添加一个标签元素,其中for元素指向复选框的id。

<input id="mycheckbox" type="checkbox">
<label id="mylabel" for="mycheckbox"></label>

接下来包括一些css:

#mycheckbox {
    display: none;
}

使用标签控件绘制复选框,这是我制作的:

#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库(将它放在头标记中):

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

查看小提琴以查看它的实际效果: fiddle