Меняем вид checkbox и radiobutton для сайта
Добавлено 11.08.2015 в 20:05
Меняем вид checkbox и radiobutton для сайта
Начну с того что долго голову не ломал, и велосипед придумывать не пришлось, т.к. в интернете есть кучу способов замену чекбоксов, есть те кто изменяют их через js плагины, но это я считаю старым способом, поэтому проще оформить все в CSS.
Смысл CSS кода состоит в том что при использовании псевдоклассов :checked и :not, в начале CSS кода скрываются checkbox и radiobutton

Код
input[type=checkbox]:not(checked),input[type=radio]:not(checked){position:absolute;opacity:0;}


Скрывается за счет селектора opacity:0;, можно использовать и другие способы скрытия как display: none;.А их работа имитируется для тега <label> с помощью :before и :after, так как он привязан за счет атрибута for, что и легко просматривается в коде: Пример с страницы добавления материалов ucoz модуля Новости сайта

Код
<input id="format_message" type="checkbox" name="format_message" value="1" checked=""><label for="format_message">Заменять переводы строк тегом <b><BR></b></label>


Не мало важно последовательность в коде тегов <label> и <input>
Теперь сам код который вы вставите в свои стили CSS

Код
/*----Checkbox и Radio стилизация от uGarts-----*/
input[type=checkbox] {vertical-align:top;margin:0 3px 0 0;width:17px;height:17px;}
input[type=checkbox]:not(checked),input[type=radio]:not(checked){position:absolute;opacity:0;}
input[type=checkbox]:not(checked) + label {position: relative; padding: 0 0 0 60px;}
input[type=checkbox]:not(checked) + label:before {content:'';position:absolute;top:-4px;left:0;width:50px;height:26px;border-radius:13px;background:#FF8F8F;box-shadow:inset 0 2px 3px rgba(0,0,0,.2);}
input[type=checkbox]:not(checked) + label:after {content:'';position: absolute;top:-2px;left: 2px;width:22px;height:22px;border-radius:10px;background: #FFF;box-shadow: 0 2px 5px rgba(0,0,0,.3);transition:all 0.3s;}
input[type=checkbox]:checked + label:before {background: #68C3A3;}
input[type=checkbox]:checked + label:after {left: 26px;}
input[type=radio]:not(checked) + label {position: relative;padding: 0px 0px 0px 30px;}
input[type=radio]:not(checked) + label:before {content:'';position:absolute;top:-4px;left:2px;width:22px;height:22px;border:1px solid #55A086;border-radius:50%;background: #FFF;}
input[type=radio]:not(checked) + label:after {content:'';position:absolute; top:-3px;left:3px;width:22px;height:22px;border-radius:50%;background:#68C3A3;box-shadow:inset 0 1px 1px rgba(0,0,0,.5);opacity:0;transition:all 0.3s;}
input[type=radio]:checked + label:after {opacity:1;}
label {line-height: 30px;}
/*----Checkbox и Radio стилизация от uGarts-----*/


Немного о плюсах и минусах данного метода

-- Неограниченные возможности в стилизации при помощи CSS
-- В браузерах старых версий и IE 8 и ниже версий отображения может не корректно что минус, но и сохранить стандартный, не портя вид что большой плюс. Совсем старые браузеры селекторы с плюсами не поддерживают, а так же :not и :checked
-- Код малый что плюс
-- Обязательна последовательность тегов
-- Наличие bootstrap'a скажется на позиционировании. и придется утрудиться в CSS
К материалу оставили 2 комментария
Webmaster-uCoz
Роман Домнин @Webmaster-uCoz
8
09.10.2015 в 21:43 - Пятница
1
LaйkN1ke
Миша Гамазенко @LaйkN1ke
70
19.03.2016 в 00:02 - Суббота
2