Bootstrap предлагает продуманные стили для форм, а также стандартный подход к валидации. При оформлении формы важно не только «красиво» сделать поля, но и обеспечить доступность (доступ) для всех пользователей.

Формы в Bootstrap: Подробный разбор

Общее описание

Bootstrap предлагает готовую систему стилей для создания красивых, адаптивных и удобных форм. С его помощью можно быстро сверстать поля ввода, чекбоксы, переключатели, селекты и прочие элементы, не тратя время на ручное оформление. Главное — использовать правильные CSS-классы.

📢 Подписывайтесь на наш Telegram-канал.

Там вы найдете анонсы обучающих статей и видео, готовый код для ваших проектов и увлекательные курсы. Ничего лишнего — только практика, вдохновение и развитие.

👉 https://t.me/codelab_channel

Вот основные принципы:

  • Каждый элемент формы оборачивается в div с отступом, например, .mb-3 (margin-bottom).
  • Все поля ввода получают класс .form-control — это добавляет стильную рамку, внутренние отступы и анимацию фокуса.
  • Метки (<label>) получают класс .form-label, чтобы соответствовать стилю Bootstrap.
  • Для чекбоксов, радиокнопок и ползунков используются специальные классы, такие как .form-check, .form-range, .form-switch и т.д.
  • Bootstrap также поддерживает "плавающие" метки (.form-floating) и группы элементов (.input-group), например, поле + кнопка.

Пример: Расширенная форма с разными элементами

<form>
  <div class="mb-3">
    <label for="name" class="form-label">Имя</label>
    <input type="text" class="form-control" id="name" placeholder="Введите имя" required>
  </div>

  <div class="mb-3">
    <label for="email" class="form-label">Email адрес</label>
    <input type="email" class="form-control" id="email" placeholder="name@example.com" required>
    <div class="form-text">Мы не передаем ваш email третьим лицам.</div>
  </div>

  <div class="mb-3">
    <label for="password" class="form-label">Пароль</label>
    <input type="password" class="form-control" id="password" required>
  </div>

  <div class="form-check mb-3">
    <input class="form-check-input" type="checkbox" id="rememberMe">
    <label class="form-check-label" for="rememberMe">
      Запомнить меня
    </label>
  </div>

  <div class="mb-3">
    <label for="gender" class="form-label">Пол</label>
    <select class="form-select" id="gender">
      <option selected>Выберите...</option>
      <option value="male">Мужской</option>
      <option value="female">Женский</option>
      <option value="other">Другое</option>
    </select>
  </div>

  <div class="form-floating mb-3">
    <input type="text" class="form-control" id="floatingInput" placeholder="Комментарий">
    <label for="floatingInput">Комментарий</label>
  </div>

  <div class="input-group mb-3">
    <span class="input-group-text">@</span>
    <input type="text" class="form-control" placeholder="username">
  </div>

  <div class="mb-3">
    <label for="customRange1" class="form-label">Настроение (0–10)</label>
    <input type="range" class="form-range" min="0" max="10" id="customRange1">
  </div>

  <button type="submit" class="btn btn-primary">Отправить</button>
</form>

Таблица: основные классы и их назначение

Класс Bootstrap Назначение
.form-control Оформление полей ввода (input, textarea)
.form-label Стилизация меток <label>
.form-check Обёртка для чекбоксов и радио-кнопок
.form-check-input Стилизация самого <input type="checkbox">
.form-check-label Стилизация метки для чекбокса/радио
.form-select Красивый селект <select>
.form-floating Эффект "плавающей" метки внутри поля
.form-range Ползунок (input type="range")
.input-group Группа полей и кнопок/иконок/текста
.form-text Мелкий поясняющий текст под полем
.mb-3, .row, .col Отступы и сетка для организации формы
.btn, .btn-primary Кнопка действия

Валидация форм в Bootstrap: Подробный разбор

Общее описание

Bootstrap позволяет элегантно оформлять валидацию форм, используя HTML5-механику и собственные стили. Это делается с помощью классов .needs-validation, .was-validated, а также .invalid-feedback и .valid-feedback. Валидация работает на основе встроенных атрибутов (required, type="email", minlength и т.д.) и подсвечивает поля при ошибке или успехе.

Как работает:

  • HTML5 валидация использует псевдоклассы :invalid и :valid для <input>, <select>, <textarea>.
  • Класс .needs-validation на форме и novalidate отключают стандартные тултипы браузера.
  • После отправки формы скрипт добавляет .was-validated, чтобы активировать Bootstrap-стили для ошибок/успехов.
  • Классы .invalid-feedback и .valid-feedback показывают текст ошибок/подтверждений, когда поле становится is-invalid или is-valid.

Расширенный пример формы с валидацией

<form class="needs-validation" novalidate>
  <div class="mb-3">
    <label for="username" class="form-label">Имя пользователя</label>
    <input type="text" class="form-control" id="username" required minlength="3">
    <div class="valid-feedback">Выглядит хорошо!</div>
    <div class="invalid-feedback">Введите хотя бы 3 символа.</div>
  </div>

  <div class="mb-3">
    <label for="email" class="form-label">Email адрес</label>
    <input type="email" class="form-control" id="email" required>
    <div class="invalid-feedback">Укажите корректный email.</div>
  </div>

  <div class="mb-3">
    <label for="password" class="form-label">Пароль</label>
    <input type="password" class="form-control" id="password" required minlength="6">
    <div class="invalid-feedback">Пароль должен содержать минимум 6 символов.</div>
  </div>

  <div class="form-check mb-3">
    <input type="checkbox" class="form-check-input" id="terms" required>
    <label class="form-check-label" for="terms">Я принимаю условия</label>
    <div class="invalid-feedback">Вы должны принять условия.</div>
  </div>

  <button class="btn btn-primary" type="submit">Отправить</button>
</form>
// Активация валидации при отправке
const form = document.querySelector(".needs-validation");
form.addEventListener(
  "submit",
  function (event) {
    if (!form.checkValidity()) {
      event.preventDefault();
      event.stopPropagation();
    }
    form.classList.add("was-validated");
  },
  false
);

Таблица: ключевые элементы и классы Bootstrap для валидации

Элемент/Класс Назначение
novalidate Отключает стандартные браузерные подсказки
.needs-validation Подключает стили Bootstrap валидации, требует скрипт
.was-validated Присваивается после отправки — активирует визуальную валидацию
required, type, minlength, pattern HTML5-валидация условий поля
.form-control Стиль поля ввода
.is-valid / .is-invalid Устанавливаются автоматически при .was-validated
.valid-feedback Текст, показываемый при успешной валидации
.invalid-feedback Текст, показываемый при ошибке
.form-check, .form-check-input Для валидации чекбоксов и радио-кнопок
 

Комментарии

0

Без регистрации и смс