CSS-стиль ввода


178

Любой стиль для inputвлияет на каждый элемент ввода. Есть ли способ указать стили для применения только для флажков без применения класса для каждого элемента флажка?

Ответы:


312

С помощью CSS 2 вы можете сделать это:

input[type='checkbox'] { ... }

Это должно быть довольно широко поддержано в настоящее время. Смотрите поддержку для браузеров


18
Я считаю, что IE 7 и выше поддерживают атрибуты селекторов, которые на самом деле CSS 2.1. quirksmode.org/css/contents.html
TJ L

2
@realtebo: обратите внимание, что многие стили (границы, фон и т. д.) не могут применяться непосредственно к флажкам HTML.
Рой Тинкер

1
@RoyTinker Вы бы использовали outline, а не borderдля флажков.
TylerH

30

Я создаю свое собственное решение без ярлыка

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 16px;
         height: 16px;
         top: 0;
         left: 0;
         border: 2px solid #555555;
         border-radius: 3px;
         background-color: white;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid black;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#e9e9e9;
}
input[type=checkbox]:checked:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#1E80EF;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid white;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">


Как это сделать с серым фоном, как на этом изображении ( i.stack.imgur.com/Q23fy.png ), если вы можете посмотреть мой пост ( pt.stackoverflow.com/questions/436890/estilizar-checkbox ). Спасибо.
Тиаго

Фантастика! Можете ли вы поставить ответ в моем сообщении, чтобы я пометил как готовый?
Тиаго

1
После нескольких часов поиска и тестирования это единственное, что сработало для меня. Спасибо!
Марк

1
Потрясающие примеры
Адриан Григутис

24

Что-то, что я недавно обнаружил для оформления радио кнопок и флажков. Раньше мне приходилось использовать jQuery и другие вещи. Но это глупо просто.

input[type=radio] {
    padding-left:5px;
    padding-right:5px;
    border-radius:15px;

    -webkit-appearance:button;

    border: double 2px #00F;

    background-color:#0b0095;
    color:#FFF;
    white-space: nowrap;
    overflow:hidden;

    width:15px;
    height:15px;
}

input[type=radio]:checked {
    background-color:#000;
    border-left-color:#06F;
    border-right-color:#06F;
}

input[type=radio]:hover {
    box-shadow:0px 0px 10px #1300ff;
}

Вы можете сделать то же самое для флажка, очевидно , изменить input[type=radio]к input[type=checkbox]и изменения border-radius:15px;к border-radius:4px;.

Надеюсь, что это несколько полезно для вас.


Действительно хорошо, очень плохо, что не так много работает ни в Opera, ни в IE = (
Мишель Айрес

1
Если вы хотите применить свой собственный стиль к флажку / вводу, загляните в мой блог о пользовательских элементах ввода через CSS . Затем вы можете стилизовать его так, как хотите, только с помощью CSS, включая запасной вариант IE8.
Феликс Хагспил

8

Классы также хорошо работают, такие как:

<style>
  form input .checkbox
  {
    /* your checkbox styling */
  }
</style>

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

Вероятно, нет необходимости вкладывать внутри .checkbox внутри формы, потому что вы вряд ли найдете флажок за пределами формы. Также входной .checkbox должен быть input.checkbox
Дункан Уокер

@DuncanWalker Я не проверял его, но разве formтеги не были бы необходимы, чтобы связать элемент управления вводом с элементом управления отправкой по умолчанию?
Джим Фелл

1
@ Джим Упал, это не работает. Если я создаю два разных класса для двух разных стилизованных флажков, например .checkbox1 [input = 'checkbox'] и .checkbox2 [input = 'checkbox'], стили всегда будут влиять на оба независимо… как вы гарантируете, что стили являются отдельными?
Крыс

@Krys Вам нужно дать своим флажкам разные имена классов.
Джим Фелл


4
input[type="checkbox"] {
 /* your style */
}

Но это будет работать только для браузеров, кроме IE7 и ниже, для тех, которые вам придется использовать класс.


ниже IE7 он, сам IE7 в порядке с селекторами. Протестировано и смотрите здесь: kimblim.dk/css-tests/selectors
Фрэнк Нок

3

Trident предоставляет ::-ms-checkпсевдоэлемент для флажков и переключателей. Например:

<input type="checkbox">
<input type="radio">

::-ms-check {
    color: red;
    background: black;
    padding: 1em;
}

Это отображается следующим образом в IE10 в Windows 8:

введите описание изображения здесь


2

Поскольку IE6 не понимает селекторы атрибутов, вы можете комбинировать сценарий, видимый только в IE6 (с условными комментариями) и jQuery или IE7.js Дином Эдвардсом.

IE7 (.js) - это библиотека JavaScript, которая позволяет Microsoft Internet Explorer вести себя как браузер, соответствующий стандартам. Он исправляет многие проблемы с HTML и CSS и обеспечивает прозрачную работу PNG в IE5 и IE6.

Выбор использования классов, jQuery или IE7.js зависит от ваших симпатий и антипатий и других ваших потребностей (возможно, прозрачность PNG-24 по всему сайту без необходимости полагаться на PNG-8 с полной прозрачностью, которая отступает до 1-битной прозрачности в IE6 - создается только Fireworks, pngnq и т. д.)


1

Несмотря на то, что CSS предоставляет вам способ сделать стиль, специфичный для типа флажка или другого типа, будут проблемы с браузерами, которые не поддерживают это.

Я думаю, что единственным вариантом в этом случае будет применение классов к вашим флажкам.

просто добавьте class = "checkbox" к вашим флажкам.

Затем создайте этот стиль в своем коде CSS.

Одна вещь, которую вы могли бы сделать, это:

main.css

input[type="checkbox"] { /* css code here */ }

ie.css

.checkbox{ /* css code here for ie */ }

Затем используйте специфичные для IE CSS:

<!--[if lt IE 7]>
   <link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

Вам все еще нужно будет добавить класс, чтобы он работал в IE, и он не будет работать в других браузерах, отличных от IE, которые не поддерживают IE. Но это сделает ваш сайт дальновидным с помощью кода CSS, и по мере того, как IE получит поддержку, вы сможете удалить то есть конкретный код CSS, а также классы CSS из флажков.


спасибо за подсказку о 2 таблицах стилей. хотя я пытаюсь избежать такого рода вещей, я думаю, что я просто создам стиль для флажка, и это все ...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.