CSS: checkbox
создаем пользовательские чекбоксы без JavaScript
Обычно создание пользовательских переключателей не обходится без изрядного количества JavaScript-кода. Но такую задачу можно решить, используя только HTML и CSS.
HTML:
<label class="switch">
<input type="checkbox" class="switch-input">
<span class="switch-slider"></span>
</label>
CSS:
Создаем контейнер для переключателя:
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
скрываем стоковый чекбокс:
.switch-input {
opacity: 0;
width: 0;
height: 0;
}
создаем видимый бекграунд переключателя:
.switch-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
}
создаем сам переключатель:
.switch-slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
transition: .4s;
}
создаем псевдокласс, стилизующий переключатель во включенном состоянии checked
:
.switch-input:checked + .switch-slider {
background-color: #2196F3;
}
перемещаем переключатель вправо во включенном состоянии:
.switch-input:checked + .switch-slider:before {
transform: translateX(26px);
}
Благодаря кастомизации псевдокласса :cheked
получается абсолютно функциональный переключатель без единой строчки кода JavaScript.
Преимущества
- Не нужен JavaScript: чем меньше кода, тем меньше ошибок.
- Доступность: поведение мыши и клавиатуры соответсвует потребностям решаемой задачи “по умолчанию”, не требуя доработок.
Спасибо за внимание.