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

178

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

Leigh
источник

Ответы:

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;.

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

Leo_V117
источник
Действительно хорошо, очень плохо, что не так много работает ни в 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"] {...}

Это объясняет это здесь .

нерешительный
источник
4
input[type="checkbox"] {
 /* your style */
}

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

cdm9002
источник
ниже 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 и т. д.)

FelipeAls
источник
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 таблицах стилей. хотя я пытаюсь избежать такого рода вещей, я думаю, что я просто создам стиль для флажка, и это все ...