Стилі введення 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
Duncan Walker

@DuncanWalker Я не перевіряв це, але чи не formтеги були б необхідними для прив'язки керування введенням до керування поданням за замовчуванням?
Джим Фелл

1
@Jim Fell це не працює. Якщо я створять два різних класу для двох різних стильових прапорців, тобто .checkbox1 [input = 'checkbox'] та .checkbox2 [input = 'checkbox'], стилі завжди будуть впливати на обидва, незалежно від того.
Крис

@Krys Потрібно вказати елементам прапорця різні назви класів.
Джим Фелл

4

Ви можете застосувати лише певний атрибут, виконавши:

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

Це пояснюється тут .


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

Але це працюватиме лише для браузерів, окрім IE7 та нижче, для тих, кому доведеться використовувати клас.


нижче IE7 це, сам IE7 чудово підходить до селекторів. Тестував
Frank Nocke

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 - створено лише феєрверками та pngnq тощо)


1

Хоча CSS і надає спосіб зробити стиль, характерний для типу прапорця чи іншого типу, з браузерами, які не підтримують це, можуть виникнути проблеми.

Я думаю, що вашим єдиним варіантом у цьому випадку буде застосування класів до ваших прапорців.

просто додайте в свої прапорці class = "checkbox".

Потім створіть цей стиль у своєму коді css.

Ви можете зробити це:

main.css

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

тобто.css

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

Потім використовуйте специфічний css для IE:

<!--[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.