Создание переключающейся кнопки в HTML: CSS и jQuery

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Создание кнопки-переключателя возможно реализовать с использованием HTML-элемента checkbox, стилеобразующего CSS и управляющего состоянием JavaScript:

HTML
Скопировать код
<label class="toggle-switch">
  <input type="checkbox" onchange="toggleIt()">
  <span class="slider"></span>
</label>
CSS
Скопировать код
.toggle-switch { position: relative; width: 60px; height: 34px; }
.toggle-switch input { display: none; }
.slider {
  position: absolute; width: 100%; height: 100%;
  background-color: #ccc; border-radius: 34px;
  transition: background-color 0.2s;
}
.slider::before {
  content: ""; position: absolute; width: 26px; height: 26px;
  left: 4px; bottom: 4px; background-color: white; border-radius: 50%;
  transition: transform 0.2s;
}
input:checked + .slider { background-color: #2196F3; }
input:checked + .slider::before { transform: translateX(26px); }
JS
Скопировать код
function toggleIt() {
  // Здесь мы меняем состояние переключателя...
}

Представленный выше код является простым и функциональным решением, которое готово к использованию.

Кинга Идем в IT: пошаговый план для смены профессии

Изучаем и улучшаем кнопку-переключатель

Добавляем функциональности с помощью jQuery

JavaScript-библиотека jQuery поможет облегчить управление состоянием переключателя:

JS
Скопировать код
$('input[type="checkbox"]').click(function(){
  if($(this).is(":checked")){
    $(this).addClass("checked");
  } else {
    $(this).removeClass("checked");
  }
});

Создаем эффект 3D

Для создания эффекта трёхмерности на вашей кнопке используйте следующие стили CSS, которые не потребуют ношения 3D-очков:

CSS
Скопировать код
input:not(:checked) + .slider {
  box-shadow: inset 0px 0px 5px grey;
}
input:checked + .slider {
  box-shadow: 0px 2px 5px grey;
}

Делаем маркировку элементов

Четкая маркировка элементов интерфейса поможет избежать путаницы при использовании:

HTML
Скопировать код
<label class="toggle-switch" aria-label="Переключатель для Великого">
  <!-- Здесь находятся элементы checkbox и slider -->
</label>

Прочие вариации

Оформление в стиле "soft UI"

Современный дизайн в стиле "мягкого UI" предложит вашему переключателю актуальный вид:

CSS
Скопировать код
.slider {
  /* ...предыдущие стили... */
  background-color: #e0e0e0;
  box-shadow: inset 6px 6px 12px #babecc,
              inset -6px -6px 12px #ffffff;
}

Наглядные анимации

Сделайте переключатель более информативным с помощью анимации или иконок:

JS
Скопировать код
$("input[type='checkbox']").change(function(){
  if($(this).is(":checked")) {
    // Добавить анимацию для состояния "включено"
  } else {
    // Добавить анимацию для состояния "выключено"
  }
});

Визуализация

Примерно как обычный выключатель света:

Markdown
Скопировать код
До переключения: 💡🔘---OFF
После переключения: 💡🔘---ON

Кнопка-переключатель в HTML действует по аналогичному принципу:

HTML
Скопировать код
<button onclick="this.classList.toggle('active')">Переключить</button>

При активации:

Markdown
Скопировать код
До: [Кнопка: Неактивна 🔘]
После: [Кнопка: Активна 🔘✨]

Схоже с включением режима "Ночной свет" в редакторе кода!

Частые проблемы и сложности

Не забываем о "Mobile First"

Убедитесь, что переключатель приспособлен для использования на мобильных устройствах:

CSS
Скопировать код
@media screen and (max-width: 600px) {
  .toggle-switch {
    width: 80px;
  }
}

Ограничиваем использование JavaScript

Если нет необходимости, приоритет отдайте решениям на CSS:

CSS
Скопировать код
input:checked + .slider::after {
  content: '✔';
  color: white;
}

Проблемы совместимости браузеров 💔

Не забывайте тестировать ваш код в различных браузерах, поскольку они могут отображать один и тот же код по-разному.

Полезные материалы

  1. Элемент <button> – HTML — полная информация о кнопках в HTML.
  2. Как создать переключатель – W3Schools — руководство по созданию переключателей.
  3. Трюк с checkbox | CSS-Tricks — неожиданные применения элемента checkbox.
  4. Обзор WAI-ARIA | W3C — учебник по созданию доступных пользовательских интерфейсов.
  5. Кнопки-переключатели – Инклюзивные компоненты — основы создания включателей, доступных для широкого круга пользователей.