Задать вопрос

Как сделать кастомные checkbox с картинками?

Имеем данный код:

HTML
<label class="label__kids" for="1.1">
<input name="kids" class="input__kids" type="checkbox" name="1" id="1.1">
</label>


CSS
.input__kids{
  display: none;
}
.label__kids{
  position: relative;
  top: -192px;
  left: 320px;
  width: 32px;
  height: 32px;
  background-image: url(/images/svg/chek_it_mobile.svg);
}
.input__kids:checked{
  background-image: url(/images/svg/cheked.svg);
}
.input__kids:checked+.label__kids{
  display:block;
}


Нужно, чтобы после нажатия на checkbox появлялся checked.svg
  • Вопрос задан
  • 3890 просмотров
Подписаться 4 Простой Комментировать
Решения вопроса 1
Ankhena
@Ankhena Куратор тега CSS
Нежно люблю верстку
.input__kids:checked + span{
  background-image: url(/images/svg/cheked.svg);
}

<label class="label__kids" for="1.1">
<input name="kids" class="input__kids" type="checkbox" name="1" id="1.1">
<span></span>
</label>

и размеры, понятное дело. Сам инпут скрыть.
Либо
инпут не внутри лейбл, а лейбл после инпут, тогда будетinput:checked + label
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
puchkovk
@puchkovk
Усложнять — просто. Упрощать — сложно.
.input__kids:checked{
  background-image: none;
}
.input__kids:checked:before{
  content:' ';
  width:1em;
  height:1em;
  position:absolute;
  left: -2em;
  top: 0;
  background-image: url(/images/svg/cheked.svg);
}


Общий смысл - делаете чекбокс прозрачным (но не display:none), а в псевдоэлемент before пихаете ваш SVG.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы