Приветствую вас на своем блоге, уважаемые читатели, интересующиеся сайтостроением. Сегодня я покажу вам классный прием, который позволит создавать классные чекбоксы, гораздо более красивые, чем те, что предлагает html по умолчанию. Я покажу, как делается в css оформление checkbox
-ов. Иными словами, я покажу вам, как сделать на css красивые чекбоксы (checkbox), то есть галочки.
Начальная разметка
Итак, начать нужно с того, чтобы добавить в html код, который выведет наши чекбоксы, а также подписи к ним (label), эти поля нужно связать между собой, чтобы при клике на label
можно было устанавливать галочку в поле.
<input type="checkbox" id="box1"> <label for="box1"><span></span>Выбор 1</label> <input type="checkbox" id="box2"> <label for="box2"><span></span>Выбор 2</label> <input type="checkbox" id="box3"> <label for="box3"><span></span>Выбор 3</label>
Так, я немного прокомментирую. У нас есть три пары: поле checkbox
и подпись к нему. Каждое поле получает свой идентификатор, связка с лейблом происходит с помощью атрибута for
, где прописывается имя идентификатора, с которым нужно связать. Пока на странице все выглядит так, то есть это обычный внешний вид чекбоксов. Сейчас мы будем его изменять.
Убираем input, оформляем спаны
Итак, теперь нам надо скрыть со страницы обычные чекбоксы.
input[type="checkbox"] {
display:none;
}
Теперь нужно как-то оформить новые поля. Оформлять мы будем элементы span, так как они находятся внутри label
.
input[type="checkbox"] + label span{
display:inline-block;
width:40px;
margin-right: 10px;
height:40px;
vertical-align:middle;
border: 5px solid green;
cursor:pointer;
border-radius: 5px;
}
Этим селектором мы выбрали все спаны в лейблах, которые находятся в коде сразу за input
ами с типом checkbox
. Таким образом, оформление применится к нашим спанам. Мы даем им блочно-строчный тип, определенную ширину и высоту, отступ справа, чтобы текст не прилегал вплотную.
Для оформления я добавил толстую зеленую рамку и закругление углов в 5 пикселей. Также добавим стиль для курсора — при наведении на спаны он должен меняться с обычного вида на указывающий перст.
Делаем так, чтобы все заработало
Теперь нужно сделать так, чтобы при клике внутри спана, то есть при выборе какого-то варианта, в него автоматом ставилась галочка. Для этого я для начала нашел в интернете соответствующую иконку с галочкой (она должна быть в формате png), уменьшил ее до размеров нашего поля. Теперь остается вставить такой код:
input[type="checkbox"]:checked + label span{
background:url(btn.png) no-repeat;
}
Все, теперь работает! Попробуйте пощелкать и вы увидите, что при выборе появляется красивая галочка. Моя картинка лежала в той же папке, что и файл css и называлась btn.png
, отсюда и такая запись.
Ну а что же делает наш волшебный селектор input[type="checkbox"]:checked + label span
? По сути, он приказывает браузеру следующее: когда любой из чекбоксов будет отмечен, примени для спанов в лейблах фоновую картинку. Вот так вот все просто, мы обошлись без скриптов, сделав красивые чекбоксы на чистом css. Пишите в комментарии, если что-то непонятно.