Красивые Radio Buttons (radio кнопка) и Checkbox CSS (чекбокс)
↓ Также Вам будет интересно ↓
Вам интересно узнать, как можно изменить стили флажков (checkbox css) и переключателей (radio кнопка), без JavaScript? Благодаря CSS3 это возможно!
Шаг 1: Общие сведения
Кто хоть немного знаком с CSS, тот возможно уже догадался, как мы будем реализовывать нашу задачу. С помощью данной функции:
1 2 |
input[type="checkbox"]:checked + label { } |
Теперь, для тех, кто имеет не очень глубокие знания в это направлении – не бойтесь, читайте далее!
Что же мы будем делать? Используем CSS3 псевдо селектор
Шаг 2: Настройка нашего HTML кода
Мы начнем с создания HTML и CSS файлов (Вы же можете использовать свои стили, исходя из дизайна Вашего сайта). В данной статье будет продемонстрировано только создание чекбокса, так как радио кнопка имеет такой же принцип её стилизации и также есть в исходнике.
Хорошо, давайте начинать? А начнем мы с создания наших чекбокс input, после чего перейдем к label.
1 2 |
<input type="checkbox" /> <label>Styled Check Box</label> |
Теперь, только в случае, если вы не знаете много о
1 2 |
<input id="c1" type="checkbox" name="cc" /> <label for="c1">Check Box 1</label> |
Я также добавлю внутри label, но это более личное предпочтение, но далее Вы поймете зачем он нужен.
Шаг 3: CSS стили
Именно здесь начинается самое интересное. Первое, что необходимо сделать – это скрыть стандартный чекбокс флажок (и это является основой данной статьи). Стили checkbox.
1 2 3 |
input[type="checkbox"] { display:none; } |
Теперь, когда это сделано, мы можем стилизовать label, но более конкретно span внутри label. Я делаю это таким образом, чтобы сделать положение флажка более точным. Без нее вы бы, вероятно, использовали фоновое изображение для label непосредственно, но таким способом точно его позиционировать сложно.
1 2 3 4 5 6 7 8 9 |
input[type="checkbox"] { display:none; } input[type="checkbox"] + label span { display:inline-block; width:19px; height:19px; background:url(check_radio_sheet.png) left top no-repeat; } |
Позвольте мне коротко объяснить это. Прежде всего, обратите внимание на фон. У меня есть маленький спрайт, так что все, что нужно сделать, это установить фон позиции по span.
Вот остальная часть CSS, специфичные для моего стиля. Это чисто для эстетики.
1 2 3 4 5 6 7 8 9 10 11 12 |
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; } |
Шаг 4: Как заставить это работать?
Так, осталось совсем немного . Последнее, что нужно сделать, это определить состоянии элемента при входе, и, возможно, также при наведении курсора мыши. Это довольно просто!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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; } |
Обратите внимание, что, поскольку я использовал спрайт листа, все, что мне нужно сделать, это изменить позиционирование фона.
Поддержка браузеров
Псевдо-селекторы поддерживаются во всех браузерах, кроме IE – он не поддерживает. Вы не использовать :checked в IE9 и ниже, но его использование более практично.
Поддерживают ли мобильные браузеры – неясно. Mobile Safari Pre IOS 6 не поддерживает его.
Заключение
Спасибо за внимание! Возникнут трудности – пишите в комментариях!
Данный урок подготовлен для вас командой сайта vladmaxi.net
Источник урока:
Перевел: Владислав Бондаренко
http://onblog.pw/
Интересная статья, но возник такой вопрос: а что увидят пользователи браузеров, которые не поддерживают такой способ стилизации переключателей?
/
Здравствуйте! Ничего страшного не произойдет, просто пользователь увидит обычные, не стилизованные переключатели.
В крайнем случае можно выводить сообщение пользователю о том, что он использует старую версию браузера, и предложить ему обновить её, так как сайт может работать некорректно.