Сверстать кастомный чекбокс можно с использованием HTML-элемента <label> и скрытого элемента <input type="checkbox">.

Для создания кастомного внешнего вида чекбокса можно использовать CSS-стили.

Семантически верный способ сверстать кастомный чекбокс состоит в следующих шагах:

  1. Создать элемент <label> с атрибутом for, который указывает на id связанного с ним элемента <input type="checkbox">. Например:
<label for="my-checkbox">Мой кастомный чекбокс</label>
<input type="checkbox" id="my-checkbox">
  1. Скрыть стандартный чекбокс с помощью CSS-стилей. Например:
input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
  1. Создать элемент, который будет заменять стандартный чекбокс, например, <span>. Например:
<label for="my-checkbox">
    <span class="checkbox"></span>
    Мой кастомный чекбокс
</label>
<input type="checkbox" id="my-checkbox">
  1. Оформить элемент <span> с помощью CSS-стилей, чтобы создать желаемый внешний вид кастомного чекбокса. Например:
.checkbox {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 1px solid #ccc;
    border-radius: 3px;
    background-color: #fff;
    cursor: pointer;
}
  1. Создать стили для состояний чекбокса - нажатого и выбранного. Например:
input[type="checkbox"]:checked + label .checkbox {
    background-color: #007bff;
    border: 1px solid #007bff;
}
  1. Добавить возможность переключения состояния чекбокса при клике на кастомный элемент. Например:
input[type="checkbox"]:checked + label .checkbox:after {
    content: url("checkmark.svg");
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

В итоге получится кастомный чекбокс с семантически верной структурой HTML и правильным поведением при клике и выборе.


Назад