—»     —»   Оформление чекбоксов и радио-кнопок при помощи CSS3
  Раздел: Формы   Комментариев: 2  

Оформление чекбоксов и радио-кнопок при помощи CSS3



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

Эти два типа элементов ввода представляют собой новые элементы форм, которые довольно-таки сложно правильно и красиво оформить (таким образом, чтобы они выглядели одинаково на разных платформах) – Windows, OS X и Linux отличаются в дизайне и способе отображения этих элементов формы.

Оформление чекбоксов и радио-кнопок при помощи CSS3

Если вы хотите оформить эти два элемента форм, то это руководство как раз для вас. Итак, давайте приступим.

HTML-разметка

Давайте начнем с создания нового HTML-документа. HTML-структура документа будет следующей.

Радио-кнопка

<div class="radio">
<input id="male" type="radio" name="gender" value="male">
<label for="male">Male</label>
<input id="female" type="radio" name="gender" value="female">
<label for="female">Female</label>
</div>

Чекбокс

<div class="checkbox">
<input id="check1" type="checkbox" name="check" value="check1">
<label for="check1">Checkbox No. 1</label>
<br>
<input id="check2" type="checkbox" name="check" value="check2">
<label for="check2">Checkbox No. 2</label>
</div>

CSS-код

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

Оформление чекбоксов и радио-кнопок при помощи CSS3

Оформляем радио-кнопку

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

label {
display: inline-block;
cursor: pointer;
position: relative;
padding-left: 25px;
margin-right: 15px;
font-size: 13px;
}

Затем мы скрываем сам радио-ввод.

input[type=radio] {
display: none;
}

Далее мы заменяем скрытый радио-ввод на псевдо-элемент :before.

label:before {
content: "";
display: inline-block;

width: 16px;
height: 16px;

margin-right: 10px;
position: absolute;
left: 0;
bottom: 1px;
background-color: #aaa;
box-shadow: inset 0px 2px 3px 0px rgba(0, 0, 0, .3), 0px 1px 0px 0px rgba(255, 255, 255, .8);
}

Вышеприведенные стили применяются и к чекбоксу. Единственное различие заключается в том, что радио-ввод представлен в виде окружности. Чтобы достичь такого эффекта, мы добавляем border-radius, значение которого составляет ровно половину высоты и ширины элемента.

.radio label:before {
border-radius: 8px;
}

На данном этапе наш проект выглядит следующим образом:

Оформление чекбоксов и радио-кнопок при помощи CSS3

Теперь внутрь мы добавим небольшую окружность, когда элемент ввода выделен. Мы воспользуемся CSS3 псевдо-классом :checked вместе с HTML-символом табуляции (
&#8226;
). Этот знак табулированного списка будет отображен при помощи параметра content, и поэтому нам нужно конвертировать его из HTML в CSS при помощи Entity Conversion Tool.

input[type=radio]:checked + label:before {
content: "\2022";
color: #f3f3f3;
font-size: 30px;
text-align: center;
line-height: 18px;
}

Итак, когда элемент радио-ввода (скрытый) будет отмечен или выбран, внутри появится меньшая по размеру окружность, как это показано на нижеприведенном скриншоте.

Оформление чекбоксов и радио-кнопок при помощи CSS3

С другой стороны, вы также можете воспользоваться изображением, и отобразить его при помощи параметра background-image в псевдо-элементе :before, который мы добавили ранее. Мы не использовали его, так как предпочитаем не использовать изображения, если есть другие варианты.

Оформляем чекбокс

Теперь давайте оформим внешний вид чекбокса. Прежде всего, мы также скроем этот элемент.

input[type=checkbox] {
display: none;
}

Так как мы заменили элемент ввода на псевдо-элемент :before, теперь мы можем добавить закругленные углы.

.checkbox label:before {
border-radius: 3px;
}

Далее нам нужно добавить галочку тем же образом, как мы сделали это в случае с радио-вводом. На этот раз мы воспользуемся HTML-символом галочки (
&#10003;
).

input[type=checkbox]:checked + label:before {
content: "\2713";
text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
font-size: 15px;
color: #f3f3f3;
text-align: center;
line-height: 15px;
}

А теперь давайте посмотрим на финальный результат.

Оформление чекбоксов и радио-кнопок при помощи CSS3

В завершение

Это всего лишь одна из техник стилизации элементов ввода, и вы, конечно же, в праве и силах самостоятельно дорабатывать этот метод оформления. Так как мы использовали CSS3 :checked, эта техника будет работать только в тех браузерах, где имеется соответствующая поддержка. Так что, если вы хотите, вы также можете использовать jQuery-плагин.

Наконец, вы можете посмотреть демо, и скачать исходный код по ссылкам, приведенным ниже.

Посмотреть демо | Скачать исходный код
Внимание! У вас нет прав для просмотра скрытого текста.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: CSS, отправные формы
Опубликовал Design FactoRy   Прочитано (раз): 15642   |   Оставлено комментариев: 2
Автор перевода — CoolWebmasters.Com ©   |   Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Комментарий #1: 20 марта 2013 @ 16:38
Написал: Dimka Klusevich — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
в демо, радио-ввод немного сдвинут!
Комментарий #2: 24 марта 2013 @ 20:40
Написал: inferus-vv — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Для инпутов нельзя делать display: none, так как опера их не обрабатывает в таком случае (не знаю, как с новыми версиями..). Нужно ставить position: absolute; left: -9999px;
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц February по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Сентябрь 2017    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
252627282930