Атрибут checked | htmlbook.ru

Internet ExplorerChromeOperaSafariFirefoxAndroidiOS
3.0+1.0+4.0+1.0+1.0+1.0+1.0+

Спецификация

HTML:3.24.015.0XHTML:1.01.1

Описание

Этот атрибут определяет, помечен ли заранее такой элемент формы, как флажок или переключатель. В случае использования переключателей (radiobutton), может быть отмечен только один элемент группы, для флажков (checkbox) допустимо пометить хоть все элементы.

Синтаксис

HTML
<input type="radio" checked>
<input type="checkbox" checked>
XHTML
<input type="radio" checked="checked" />
<input type="checkbox" checked="checked" />

Значения

Нет.

Значение по умолчанию

По умолчанию этот атрибут выключен.

Пример

HTML5IECrOpSaFx

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тег INPUT, атрибут checked</title>
 </head>
 <body>

  <form method="post" action="input5.php">
   <p><b>С какими операционными системами вы знакомы?</b></p>
   <p><input type="checkbox" name="option1" value="a1" checked>Windows 95/98<Br>
   <input type="checkbox" name="option2" value="a2">Windows 2000<Br>
   <input type="checkbox" name="option3" value="a3">System X<Br> 
   <input type="checkbox" name="option4" value="a4">Linux<Br> 
   <input type="checkbox" name="option5" value="a5">X3-DOS</p>
   <p><input type="submit" value="Отправить"></p>
  </form>

 </body>
</html>

Результат данного примера показан на рис. 1.

Рис. 1. Помеченный флажок в форме

htmlbook.ru

Красивые чекбоксы и радиокнопки на CSS3 без JavaScript / Habr

Благодаря псевдоклассу :checked, появившемуся в CSS3, можно стилизовать формы с чекбоксами и радиокнопками как угодно. В этом топике рассмотрен один очень простой способ, причем без использования JavaScript.

Демонстрация Скачать исходники

Для начала сделаем простой checkbox:

<input type="checkbox" name="cc" />
<label for="c1"><span></span>Check Box 1</label>

Теперь необходимо спрятать чекбокс и использовать спрайты для отображения отмеченного чекбокса/радиокнопки:

input[type="checkbox"] {
    display:none;
}
input[type="checkbox"] + label span {
    display:inline-block;
    width:19px;
    height:19px;
    margin:-1px 4px 0 0;
    vertical-align:middle;
    background:url(check_radio_sheet.png) left top no-repeat;
    cursor:pointer;
}

Осталось только заставить все это работать. По клику должен меняться спрайт с отмеченного на неотмеченный и наоборот:

input[type="checkbox"] {
    display:none;
}
input[type="checkbox"] + label span {
    display:inline-block;
    width:19px;
    height:19px;
    margin:-1px 4px 0 0;
    vertical-align:middle;
    background:url(check_radio_sheet.png) left top no-repeat;
    cursor:pointer;
}
input[type="checkbox"]:checked + label span {
    background:url(check_radio_sheet.png) -19px top no-repeat;
}

Поддержка браузерами


Псевдоклассы, в частности используемый :checked, отлично работают в большинстве браузеров, за исключением Internet Explorer 9 (и ниже) и Safari в iOS ниже 6-ой версии. Вот так наша форма отображается в IE:

Пост написан по мотивам урока на tutplus.com Quick Tip: Easy CSS3 Checkboxes and Radio Buttons.

habr.com

Чекбоксы HTML.

Мы продолжаем рассматривать элементы формы и сегодня мы рассмотрим еще один вид переключателей в HTML это чекбоксы. Чекбоксы это альтернатива радиокнопкам только чекбоксы позволяют выделить одновременно несколько элементов в противоположность радиокнопкам, где можно выбрать только один элемент.

Чекбоксы создаются очень просто с помощью все того же тега <input> только атрибут

type=»» будет содержать значение checkbox.

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

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Первая HTML страница</title>
</head>
<body>

Какие Вы фрукты любите больше всего?

Какие Вы фрукты любите больше всего?

Аппельсины Бананы Яблоки Груши Перец

</body> </html>

Как мы видим, каждый чекбокс мы заключили в тег <label> </label>, чтобы при нажатии на название фрукта чекбокс выделялся автоматически. Как уже заметили у каждого чекбокса свое имя, т.е. у атрибута name свое индивидуальное значение.

Если вы уже сохранили у себя в редакторе код выше и обновили браузер то у Вас должны были появится четыре чекбокса, которые можно выбрать хоть один, хоть все сразу. В данном варианте при загрузке страницы все чекбоксы пустые, однако бывают ситуации, когда нужно по умолчанию выделить один из них.

Для этого используется все тот же атрибут checked, который изначально отмечает выбранный чекбокс.

HTML

Апельсины

Теперь, если посмотрите, то чекбокс с именем «Апельсины» автоматически становится активным. И рассмотрим еще один атрибут для чекбоксов, который позволяет сделать не активный чекбокс. Этот атрибут именуется disabled, что в переводе с английского означает «отключен». С помощью этого атрибута чекбокс делается не активным и не реагирует на действия пользователя.

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Первая HTML страница</title>
</head>
<body>

Какие Вы фрукты любите больще всего?

Аппельсины Бананы Яблоки Груши Перец

</body> </html>

В примере выше, как видно первый элемент по умолчанию становится активным, так как присутствует атрибут checked, а последний чекбокс на против не активен так как «Перец» не является фруктом и нечего его выбирать. Для деактивации этого чекбокса использован атрибут disabled, что и сделало область не активной.

Вот и все с чекбоксами. Результат смотрите Демо-версии, а мы переходим к следующему элементу формы select.


webteoretik.ru

Меняем оформление input checkbox с помощью CSS

Оформление элементов формы — это старая проблема. Ситуация несомненно улучшается, но финала пока не видно. С появлением псевдо-контейнеров :after и :before стало возможным без дополнительных элементов и скриптов кастомизировать элемент INPUT:CHECKBOX.

<input type=»checkbox» /> <label for=»checkbox-id»>Чекбокс как есть</label>

<input type=»checkbox» />

<label for=»checkbox-id»>Чекбокс как есть</label>

В разных браузерах этот элемент будет выглядеть по разному. Chrome, Opera, IE, Yandex и прочие — будут по мере сил и фантазии разработчиков выводить checkbox с собственным оформлением.

Квадрат и галочку нельзя изменить стандартными стилями вроде:

// это работать не будет input[type=»checkbox»] { border: 1px solid #f00; background: #f00; border-radius: 5; }

// это работать не будет

input[type=»checkbox»] {

  border: 1px solid #f00;

  background: #f00;

  border-radius: 5;

}

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

План действий такой:

  1. Скрываем вывод чек-бокса;
  2. Формируем нужный внешний вид чекбокса в псевдо — элементе label:before;
  3. Дополнительные стили формируют внешний вид текущего статуса.

Важно, чтобы элемент Label был связан с чекбокс (через параметр for), тогда нажатие на метку передаётся на связанный элемент, и все работает как нужно без дополнительных скриптов.

/* прячем input checkbox */ input[type=»checkbox»] { display: none; } /* стили для метки */ label {   color: #000; cursor: default; font-weight: normal; line-height: 30px; padding: 10px 0; vertical-align: middle; } /* формируем внешний вид чекбокса в псевдоэлементе before */ label:before { content: » «; color: #000; display: inline-block; font: 20px/30px Arial; margin-right: 15px; position: relative; text-align: center; text-indent: 0px; width: 30px; height: 30px; background: #FFF; border: 1px solid #e3e3e3; border-image: initial; vertical-align: middle; } /* вариации внешнего вида в зав-ти от статуса checkbox */ /* checked */ input:checked + label:before { content: «x»; } /* disabled */ input:disabled + label:before { background: #eee; color: #aaa; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

/* прячем input checkbox */

input[type=»checkbox»] {

  display: none;

}

 

/* стили для метки */

label {

  color: #000;

  cursor: default;

  font-weight: normal;

  line-height: 30px;

  padding: 10px 0;

  vertical-align: middle;

}

 

/* формируем внешний вид чекбокса в псевдоэлементе before */

label:before {

  content: » «;

  color: #000;

  display: inline-block;

  font: 20px/30px Arial;

  margin-right: 15px;

  position: relative;

  text-align: center;

  text-indent: 0px;

  width: 30px;

  height: 30px;

  background: #FFF;

  border: 1px solid #e3e3e3;

  border-image: initial;

  vertical-align: middle;

}

 

/* вариации внешнего вида в зав-ти от статуса checkbox */

/* checked */

input:checked + label:before {

  content: «x»;

}

/* disabled */

input:disabled + label:before {

  background: #eee;

  color: #aaa;

}

Теперь внешний вид становится везде одинаковым и выглядит вот так:

Как видите для вывода галочки я использовал просто символ «x» из шрифта Arial. Далее вы можете сами решать как выглядит контейнер и галочка.

Я к примеру использую шрифт awesome, в котором есть литера галочки.

Вот тот же CSS с использованием FontAwesome:

input[type=»checkbox»] { display: none; } label {   color: #000; cursor: default; font-weight: normal; line-height: 30px; padding: 10px 0; vertical-align: middle; } label:before { content: » «; color: #000; display: inline-block; /* шрифт Awesome*/ font: 20px/30px FontAwesome; margin-right: 15px; position: relative; text-align: center; text-indent: 0px; width: 30px; height: 30px; background: #FFF; border: 1px solid #e3e3e3; border-image: initial; vertical-align: middle; } input:checked + label:before { /* глифон — галочка */ content: «\f00c»; } input:disabled + label:before { background: #eee; color: #aaa; }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

input[type=»checkbox»] {

display: none;

}

 

label {

  color: #000;

cursor: default;

font-weight: normal;

line-height: 30px;

padding: 10px 0;

vertical-align: middle;

}

 

label:before {

content: » «;

color: #000;

display: inline-block;

/* шрифт Awesome*/

font: 20px/30px FontAwesome;

margin-right: 15px;

position: relative;

text-align: center;

text-indent: 0px;

width: 30px;

height: 30px;

background: #FFF;

border: 1px solid #e3e3e3;

border-image: initial;

vertical-align: middle;

}

 

input:checked + label:before {

/* глифон — галочка */

content: «\f00c»;

}

 

input:disabled + label:before {

background: #eee;

color: #aaa;

}

Так выглядит checkbox с галочкой из набора иконок Awesome.

Написать комментарий

Данная запись опубликована в 27.12.2017 17:23 и размещена в Танцы с CSS. Вы можете перейти в конец страницы и оставить ваш комментарий.

Мало букафф? Читайте есчо !

Позиционирование фона с помощью background-position

Май 3, 2018 г.

В CSS, для позиционирования фонового изображения в контейнере, мы используем свойство background-position. Свойство можно задать отдельно для оси X и Y,  кроме того можно задать 2, 3 или 4 параметра. Классический случай — позиционирование с …

Читать

shra.ru

Простая кастомизация Checkbox и Radio / Habr

Вместо вступления

Всем доброго времени суток!

Кастомизация элементов форм наверное одно из самых увлекательных занятий в Веб-дизайне. Оправданное ли это занятие решает каждый для себя сам, хотя очевидно, что в наше время дизайнеры и верстальщики все же уделяют этому свои силы и время.

К сожалению, одного только CSS частенько не достаточно, чтобы с легкостью оформить тот или иной элемент формы. Наверное поэтому многие используют штуки вроде Uniform для своих форм. Лично я всегда стараюсь сократить количество Javascript, используемого в подобных целях, поэтому хочу рассказать о совершенно нативном HTML+CSS методе кастомизации радио-кнопок и чекбоксов.

Уверен, что на большая часть специалистов на Хабре, применяют схожие методы, для тех же, кто использует js-библиотеки, вроде Uniform, надеюсь будет полезной эта статья.

Поехали!

Итак, сразу поставим цель: оформить чекбоксы и радио-кнопки, чтобы внешне они были похожи на js-магию Uniform, но сделать это максимально простым, нативным по отношению в HTML и CSS способом, а также избежать применения лишних тегов, сохраняя семантику. Как-то так.

Основная идея строится на нативном «умении» HTML тега label устанавливать связь с определенным элементом формы. Собственно и все, дальше только код.
Разметка

<ul>                
    <li>
        <input id=»cfirst» type=»checkbox» name=»first» checked hidden />
        <label for=»cfirst»>Checked checkbox</label>
    </li>
    <li>
        <input id=»csecond» type=»checkbox» name=»second» hidden />
        <label for=»csecond»>Unchecked checkbox</label>
    </li>
    <li>
        <input id=»cthird» type=»checkbox» name=»third» hidden disabled />
        <label for=»cthird»>Disabled checkbox</label>
    </li>
    <li>
        <input id=»clast» type=»checkbox» name=»last» checked hidden disabled />
        <label for=»clast»>Disabled checked checkbox</label>
    </li>
</ul>
<ul>                
    <li>
        <input id=»rfirst» type=»radio» name=»radio» checked hidden />
        <label for=»rfirst»>Checked radio</label>
    </li>
    <li>
        <input id=»rsecond» type=»radio» name=»radio» hidden />
        <label for=»rsecond»>Unchecked radio</label>
    </li>
    <li>
        <input id=»rthird» type=»radio» name=»radio» hidden disabled />
        <label for=»rthird»>Disabled radio</label>
    </li>
</ul>
 

Совершенно нативная разметка. Использование label вместе с input прям как из учебников. Важным моментом является только то, что нужно указывать id для каждого input и for для label, чтобы связать их.

Думаю все заметили использование атрибута hidden, который скрывает сами input элементы, однако благодаря связи с label, мы все еще может манипулировать ими. В результате мы получаем что-то вроде:


Скучно совсем стало, но все работает. Теперь осталось оформить все это добро как надо. Для этого воспользуемся спрайтом, который применяется на сайте Uniform.

Оформление

input[type=»checkbox»],
input[type=»radio»] {
    display:none;            
}
input[type=»checkbox»] + label, 
input[type=»radio»] + label {
  font: 18px bold;
  color: #444;
  cursor: pointer;
}
input[type=»checkbox»] + label::before,
input[type=»radio»] + label::before {
    content: «»;
    display: inline-block;
    height: 18px;
    width: 18px;
    margin: 0 5px 0 0;
    background-image: url(uniformjs.com/images/sprite.png);
    background-repeat: no-repeat;
}
input[type=»checkbox»] + label::before {
    background-position: -38px -260px;    
}
input[type=»radio»] + label::before {
    background-position: 0px -279px;
}
input[type=»checkbox»]:checked + label::before {
    background-position: -114px -260px;
}
input[type=»radio»]:checked + label::before {
    background-position: -108px -279px;
}
input[type=»checkbox»]:disabled + label::before {
    background-position: -152px -260px;
}
input[type=»checkbox»]:checked:disabled + label::before {
    background-position: -171px -260px;
}
input[type=»radio»]:disabled + label::before {
    background-position: -144px -279px;
}
input[type=»radio»]:checked:disabled + label::before {
    background-position: -162px -279px;
}​

Тут все так же максимально просто. Используем псевдо-элемент before для того, чтобы показывать наши «виртуальные контролы» и пользователь не заметил подмены. Части спрайта, меняем в зависимости от состояния input‘а.

В результате получаем что-то вроде:

Демо

Выгода использования подобного подхода по сравнению с тем же Uniform очевидна. Никаких javascript для оформления, никаких лишних тегов, более простая, правильная и семантичная разметка. Такой же способ можно использовать для придания данным элементам более причудливых форм. К примеру, без проблем можно заделать чекбоксы в стиле iPhone не применяя при этом javascript.

Надеюсь для статья будет полезна начинающим верстальщикам и остановит их о использования js-костылей для подобных целей. Спасибо за внимание!

UPD: Как было отмечено уважаемым SelenIT2 данный способ вероятно не будет работать в браузере Safari под платформу iOS из-за досадной ошибки в поддержке html спецификации (ссылка).

habr.com

Множественная отправка чекбоксов в HTML

Итак, чекбоксы. Или же input type=»checkbox». В основном, наверное, вы встречали их на сайтах в виде галочки «я согласен с условиями политики конфеденциальности». Но нередко они используются и для конкретной отправки чего-либо заказчику сайта. И сегодня мы поговорим именно о Множественной отправке чекбоксов.

На фото выше — фрагмент типичного маркетингового квиза (когда пользователя ведут по вопросам, он отвечает на них, а затем, к примеру, получает скидку). Все данные, что он заполнил, утекают к заказчику.

 

 

Итак, в целом, мы могли бы написать что-то такое:

 

1
2
<input type="checkbox" name="Расположение-1" value="Центральный АО">
<input type="checkbox" name="Расположение-2" value="Северо-Восточный АО">
<input type="checkbox" name="Расположение-1" value="Центральный АО">
<input type="checkbox" name="Расположение-2" value="Северо-Восточный АО">

В таком случае на почту придет куча данных типа: «check-1: Центральный АО», «check-2: Северо-Восточный АО». Надо ли нам такое, когда у нас куча чекбоксов? Сомнительно.

Для этого есть специальное значение name.

1
2
<input type="checkbox" name="Расположение[]" value="Центральный АО">
<input type="checkbox" name="Расположение[]" value="Северо-Восточный АО">
<input type="checkbox" name="Расположение[]" value="Центральный АО">
<input type="checkbox" name="Расположение[]" value="Северо-Восточный АО">

Теперь же, при правильном php-обработчике (такой я приложу к этой статье) мы будем получать: «Расположение: Центральный АО, Северо-Восточный АО» и так далее. Суть в том, что одинаковые по сути (замыслу) чекбоксы делать одной сущностью, как бы «объединяя» их через одинаковый name. Но без квадратных скобок никуда, иначе придет ответом только самый нижний (в коде) из выбранных элементов.

Ну и еще по поводу связи с лейблами, если у вас множество чекбоксов — нет смысла (и вообще странно) использовать атрибут for.

1
2
3
4
<label>
<input type="checkbox" name="Расположение[]" value="Центральный АО">
<span>Центральный АО</span>
</label>
<label>
<input type="checkbox" name="Расположение[]" value="Центральный АО">
<span>Центральный АО</span>
</label>

Тут и стилизовать через ~ очень легко будет 🙂

Как-то так. Пользуйтесь и не забывайте об этом)

mail.php

Метки: checkboxes, HTML

blog.maxgraph.ru

Картинка вместо чекбокса | htmlbook.ru

Исходные чекбоксы в форме выглядят хотя и привычно, но уже несколько старомодно. Порой хочется вместо чекбокса использовать стильную картинку, которая лучше будет вписываться в существующий дизайн. С помощью CSS3 мы можем это сделать без всяких скриптов, при этом учтём и старые версии браузеров, в которых функционал формы должен сохраниться.

Для начала подготовим изображения. Нам потребуется две картинки соответствующие разному статусу чекбокса — когда он включен и выключен (рис. 1).

Рис. 1. Вверху чекбокс выключен, внизу он включен

Желательно объединить две картинки в одну в графическом редакторе, сделать из них так называемый CSS-спрайт. Дело в том, что первая картинка покажется сразу после загрузки, а вторая начнёт загружаться только после щелчка по чекбоксу. Несмотря на малый размер изображений и объём загружаемого файла, на загрузку и отображение картинки в первый раз потребуется какое-то время. Даже когда речь идёт о доли секунды эта задержка заметна визуально. Если же мы объединим рисунки в одно изображение, то оно будет загружаться целиком и показываться без малейшего замедления. Чтобы создать иллюзию того, что у нас одна картинка, а не две, надо ограничить размеры элемента и выводить изображение в виде фона. И в нужный момент просто-напросто смещать фон вверх или вниз.

HTML

После того, как спрайт сделан, перейдём к HTML-коду. Он содержит три важных элемента.

<label><input type="checkbox" value="1" name="k"><span></span></label>

Первый это тег <label>, он создаёт вокруг чекбокса невидимую рамку, щелчок внутри которой включает или выключает галочку в чекбоксе. Его наличие позволяет не щёлкать непосредственно по чекбоксу, размеры которого довольно малы, а щёлкать за пределами чекбокса. При этом всё будет работать именно так, как нам и нужно, даже несмотря на то, что по самой галочке мы не попали.

Далее идёт сам чекбокс (<input type=»checkbox»>) со всеми желаемыми параметрами. Здесь никаких ограничений нет, вставляйте в тег любые необходимые атрибуты.

После <input> следует пустой <span>, этот элемент будет выполнять декоративную роль, именно к нему и применяется наш рисунок.

CSS

Для начала определим размер отображаемого рисунка. У меня он составляет 32х26 пикселов. Заметьте, здесь речь идёт не о спрайте, где у нас объединено две картинки, а об одном изображении. Эти размеры подставляем в стиль селектора label.

label {
 width: 32px; /* Ширина рисунка */
 height: 26px; /* Высота рисунка */
 display: block; /* Блочный элемент */
 position: relative; /* Относительное позиционирование */
}

Стиль чекбокса не трогаем, он в любом случае не будет виден и переходим к нашему «декоративному» <span>. Важно сделать чтобы элемент занимал всю доступную область внутри <label>. Для этого задаём абсолютное позиционирование и устанавливаем ширину и высоту как 100% от родителя. Заодно смещаем элемент в левый верхний угол.

input[type="checkbox"] + span {
 position: absolute; /* Абсолютное позиционирование */
 left: 0; top: 0;
 width: 100%; height: 100%;
 background: url(images/switch.png) no-repeat; /* Фоновый рисунок */
 cursor: pointer; /* Курсор в виде руки */
}

Картинка добавляется как фон, здесь никаких сюрпризов нет, и меняем для разнообразия форму курсора.

На этом этапе наш чекбокс уже превратился в симпатичную картинку, осталось только задать смену рисунка, когда внутри чекбокса стоит галочка. Для этого воспользуемся псевдоклассом :checked, он срабатывает при установке галочки в поле. Правда тут есть одна хитрость. :checked применяется к чекбоксу, а менять его стиль необходимости нет, нас интересует только «декоративный» span. Поэтому используем соседние селекторы и добавляем стиль к span идущему после чекбокса с галочкой.

input[type="checkbox"]:checked + span  	{
 background-position: 0 -26px;
}

Надеюсь, теперь стало понятно такое положение <span> в HTML-коде, как раз для того, чтобы его легко стилизовать с помощью псевдокласса :checked.

Собираем код воедино (пример 1) и тестируем его в браузерах.

Пример 1. Картинка вместо чекбокса

HTML5CSS3IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Переключатель</title>
  <style>
   label {
    width: 32px;
    height: 26px;
    display: block;
    position: relative;
   }
   input[type="checkbox"] + span {
    position: absolute;
    left: 0; top: 0;
    width: 100%;
    height: 100%;
    background: url(images/switch.png) no-repeat;
    cursor: pointer;
   }
   input[type="checkbox"]:checked + span {
    background-position: 0 -26px; 
   }
  </style>
 </head>
 <body>
  <form>
   <label><input type="checkbox" value="1" name="k"><span></span></label>
   <p><input type="submit"></p>
  </form>
 </body>
</html>

Браузеры

Все современные версии браузеров — Firefox, Chrome, IE9, Opera, Safari показали одинаковый рабочий результат.

Также код не будет работать в IE8, эта версия не понимает :checked. Давайте сделаем поддержку старых версий IE, для чего вернём настройки элементов формы по умолчанию. Для начала к элементам желательно добавить классы и в стилях обращаться именно к ним. Так мы сможем задать стиль любого элемента без обращения к псевдоклассам CSS3.

<label><input type="checkbox" value="1" name="k"><span></span></label>

Чтобы в стилях затронуть версии IE младше 9.0 воспользуемся условными комментариями. В стилях остаётся задать ширину и высоту для label по умолчанию и скрыть span (пример 2).

Пример 2. Стиль для IE8

<!--[if lt IE 9]>
 <style>
  label.switch {width: auto; height: auto; }
  span.switch { display: none !important; }
 </style>
<![endif]-->

Данный код надо вставить сразу после закрывающего тега </style> в примере 1. Таким образом мы получим классический вид чекбоксов в IE7-8 и меняющуюся картинку в современных браузерах.

htmlbook.ru