dr.Brain

doctor Brain

мир глазами веб-разработчика

CSS: checkbox

создаем пользовательские чекбоксы без JavaScript

dr.Brain

время чтения 1 мин.

Photo by Coppa Cover on Unsplash

Обычно создание пользовательских переключателей не обходится без изрядного количества 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.

Преимущества

  1. Не нужен JavaScript: чем меньше кода, тем меньше ошибок.
  2. Доступность: поведение мыши и клавиатуры соответсвует потребностям решаемой задачи “по умолчанию”, не требуя доработок.

Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.