На главную
CSS и вёрстка
Переключатели и тумблеры
Тумблер на чистом CSS поверх настоящего чекбокса: размеры, цвета, скорость и видимый фокус. Чекбокс не прячется через display: none, поэтому переключатель остаётся доступен с клавиатуры.
Загрузить пример
Заготовки
Настройки
Превью
Состояние: включено.
CSS
.switch {
display: inline-flex;
align-items: center;
gap: 10px;
cursor: pointer;
user-select: none;
}
.switch input {
position: absolute;
width: 1px;
height: 1px;
opacity: 0;
pointer-events: none;
}
.switch .switch-track {
position: relative;
flex: none;
width: 52px;
height: 30px;
border-radius: 9999px;
background: #cbd5e1;
transition: background-color 180ms cubic-bezier(0.4, 0, 0.2, 1);
}
.switch .switch-track::after {
content: "";
position: absolute;
top: 3px;
left: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: #ffffff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);
}
.switch input:checked + .switch-track {
background: #2563eb;
}
.switch input:checked + .switch-track::after {
transform: translateX(22px);
}
.switch input:focus-visible + .switch-track {
outline: 3px solid #2563eb;
outline-offset: 3px;
}HTML
<label class="switch"> <input type="checkbox"> <span class="switch-track"></span> <span>Показывать подсказки</span> </label>
Подпись обёрнута в тот же <label>, поэтому по ней тоже можно нажимать, а скринридер прочитает её как имя переключателя.