Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Раскладка формы и плавающие подписи

Поля Bootstrap по умолчанию занимают всю ширину и стоят друг под другом. Для длинной формы это неудобно: имя и фамилию, город и индекс логичнее ставить в одну строку. Для раскладки используется та же сетка, что и для страницы, а для компактных форм есть плавающие подписи — подпись лежит внутри поля и уменьшается, когда в него вводят текст.

Поля в колонках

Форма получает классы row g-3, каждое поле с подписью — колонку. Промежуток g-3 разводит поля и по горизонтали, и по вертикали:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
 
<form class="row g-3">
  <div class="col-md-6">
    <label for="firstName" class="form-label">Имя</label>
    <input type="text" class="form-control" id="firstName">
  </div>
  <div class="col-md-6">
    <label for="lastName" class="form-label">Фамилия</label>
    <input type="text" class="form-control" id="lastName">
  </div>
  <div class="col-12">
    <label for="company" class="form-label">Компания</label>
    <input type="text" class="form-control" id="company">
  </div>
  <div class="col-12">
    <button type="submit" class="btn btn-primary">Сохранить профиль</button>
  </div>
</form>

От 768 пикселей имя и фамилия стоят рядом, а «Компания» занимает всю строку. На телефоне все поля друг под другом. Это форма профиля в админ-панели. Если нажать кнопку, превью отправит форму и опустеет — верните пример кнопкой «Сбросить».

Подпись слева от поля

В горизонтальной форме подпись и поле — колонки одной строки. Подписи дают класс col-form-label, чтобы она встала по центру высоты поля:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
 
<div class="row mb-3">
  <label for="teamName" class="col-sm-3 col-form-label">Команда</label>
  <div class="col-sm-9">
    <input type="text" class="form-control" id="teamName" value="Маркетинг">
  </div>
</div>

Подпись занимает 3 части из 12, поле — 9. На экране уже 576 пикселей подпись встаёт над полем.

Плавающие подписи

Обёртка form-floating: сначала поле, потом <label>. У поля обязательно должен быть атрибут placeholder — по нему Bootstrap понимает, пустое ли поле, а сам текст подсказки не виден:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
 
<div style="max-width: 360px">
  <div class="form-floating mb-3">
    <input type="email" class="form-control" id="loginEmail" placeholder="name@example.com">
    <label for="loginEmail">Email</label>
  </div>
  <div class="form-floating mb-3">
    <input type="password" class="form-control" id="loginPassword" placeholder="Пароль">
    <label for="loginPassword">Пароль</label>
  </div>
  <button type="button" class="btn btn-primary w-100">Войти</button>
</div>

Подписи стоят внутри высоких полей. Щёлкните по полю — подпись уменьшится и поднимется вверх, освободив место для текста. Такая компактная форма входа хорошо смотрится на отдельной странице админ-панели. form-floating работает и с textarea, и с form-select.

Частая ошибка

Поставить <label> перед полем внутри form-floating или забыть placeholder. В обоих случаях подпись не «плавает»: она накладывается на введённый текст или стоит не на месте. Порядок внутри обёртки всегда такой: сначала input, затем label, и у поля есть placeholder.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.