Сбросить стиль ввода для флажков по умолчанию в IE - PullRequest
9 голосов
/ 18 марта 2011

У меня есть правило 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 обходятся без удаления границы для input-rule и вместо этого используют класс .checkbox?

Ответы [ 3 ]

11 голосов
/ 18 марта 2011

Во многих браузерах невозможно сбросить флажок обратно к стандартному стилю по умолчанию.

Вероятно, это причина, по которой при перезагрузке CSS правило не содержит правила:

input {
    border: 0;
}

Наиболее совместимый метод заключается в следующем:

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

и явно перечислите каждые type из input, которые вы хотите стилизовать.

См .: http://jsfiddle.net/EPpJ9/

Это будет работать в IE7 + и во всех современных браузерах.

Вы также можете сделать это более аккуратно с помощью псевдокласса not() CSS3, но это не работает в IE8, который для меня нарушает условия:

input:not([type="checkbox"]) {
    border: 1px solid black;
}
1 голос
/ 20 февраля 2014

Если вам все еще интересно, действительно есть способ стилизовать флажки и заставить его работать в большинстве браузеров, включая IE. И вам нужно только немного CSS и просто немного JavaScript и JQuery. Работает в IE6 +

Сначала сделайте свой флажок следующим образом. Добавьте только элемент метки с элементом for, указывающим на идентификатор флажка.

<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 (поместите это в тег head):

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

Проверьте скрипку, чтобы увидеть ее в действии: скрипка

1 голос
/ 30 ноября 2011

Не могли бы вы включить ie8-js, чтобы IE8 не распознавал () псевдокласс 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]-->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...