Формы

Вёрстка форм — это одна из сильных сторон Bootstrap. Фреймворк не только помогает расположить элементы форм в нужном порядке, но и обеспечивает изменение вида элементов и их взаимодействие с пользователем.

Давайте рассмотрим типовую форму для входа на сайт и на её примере разберём, как работает Boostrap для форм. В примере 1 показано создание базовой формы пока без добавления дополнительных классов.

Пример 1. Форма для входа на сайт

<form>
 <fieldset>
  <legend>Вход на сайт</legend>
  <p><label for="inputLogin">Логин</label></p>
  <p><input id="inputLogin" placeholder="Введите логин"></p>
  <p> <label for="inputPassword">Пароль</label></p>
  <p><input type="password" id="inputPassword" placeholder="Введите пароль"></p>
  <p><label><input type="checkbox"> Запомнить меня</label></p>
  <p><button type="submit">Войти</button></p>
 </fieldset>
</form>

Форма выглядит скучно (рис. 1), поскольку какое-либо оформление ещё не включено.

Вид исходной формы

Рис. 1. Вид исходной формы

Для начала добавим к текстовому полю и полю с паролем класс form-control, это изменит стиль текстовых полей. Далее нужно сгруппировать заголовок и поле за ним, чтобы расстояние между ними было меньше обычного. Добавим <label> и <input> внутрь элемента <div> с классом form-group. Кроме того изменим чекбокс с текстом, добавив их внутрь <div> с классом checkbox и зададим другой вид кнопки. В примере 2 показаны изменения формы.

Пример 2. Применение классов

<form>
 <fieldset>
  <legend>Вход на сайт</legend>
  <div class="form-group">
   <label for="inputLogin">Логин</label>
   <input id="inputLogin" placeholder="Введите логин" class="form-control">
  </div>
  <div class="form-group">
   <label for="inputPassword">Пароль</label>
   <input type="password" id="inputPassword" placeholder="Введите пароль" class="form-control">
  </div>
  <div class="checkbox">
   <label><input type="checkbox"> Запомнить меня</label>
  </div>
  <button type="submit" class="btn btn-default">Войти</button>
 </fieldset>
</form>

В результате форма выглядит иначе (рис. 2).

Вид формы

Рис. 2. Вид формы

Однострочная форма

Чтобы сделать форму компактнее, к элементу <form> достаточно добавить класс form-inline. Элементы формы после этого вытянутся в одну строку (рис. 3). Также из кода следует убрать <fieldset> и <legend>.

Однострочная форма

Рис. 3. Однострочная форма

В примере 3 показано создание такой формы.

Пример 3. Однострочная форма

<form class="form-inline">
 <div class="form-group">
  <label for="inputLogin">Логин</label>
  <input id="inputLogin" placeholder="Введите логин" class="form-control">
 </div>
 <div class="form-group">
  <label for="inputPassword">Пароль</label>
  <input type="password" id="inputPassword" placeholder="Введите пароль" class="form-control">
 </div>
 <div class="checkbox">
  <label><input type="checkbox"> Запомнить меня</label>
 </div>
 <button type="submit" class="btn btn-default">Войти</button>
</form>

При уменьшении размера окна форма перестанет быть однострочной и примет исходный вид показанный на рис. 2.

Горизонтальная форма

Такой вид формы часто встречается на сайтах, когда поле и метка к нему располагаются на одной строке (рис. 4).

Вид горизонтальной формы

Рис. 4. Вид горизонтальной формы

Для создания формы такого вида требуется проделать несколько действий:

  • к <form> добавить класс form-horizontal;
  • к <label> добавить класс control-label, тогда метка поля будет выравниваться по правому краю и по центральной горизонтальной оси поля;
  • обернуть <label> и <input> в <div> с классом form-group;
  • использовать модульную сетку.

Мы уже имели дело с 12-колоночной модульной сеткой, применим эти навыки для управления дизайном формы. Метка будет занимать две колонки, а ширина самого поля — оставшиеся десять колонок. Вместо добавления дополнительного <div> добавим класс col-sm-2 непосредственно к <label>, так немного сократится число элементов кода. Что касается чекбокса и кнопки, то добавим к ним класс col-sm-offset-2, он сдвинет поля прямо под текстовое поле (пример 4).

Пример 4. Горизонтальная форма

<form class="form-horizontal">
 <div class="form-group">
  <label for="inputLogin" class="col-sm-2 control-label">Логин</label>
  <div class="col-sm-10">
   <input id="inputLogin" placeholder="Введите логин" class="form-control">
  </div>
 </div>
 <div class="form-group">
  <label for="inputPassword" class="col-sm-2 control-label">Пароль</label>
  <div class="col-sm-10">
   <input type="password" id="inputPassword" placeholder="Введите пароль" class="form-control">
  </div>
 </div>
 <div class="form-group">
  <div class="col-sm-10 col-sm-offset-2 checkbox">
   <label><input type="checkbox"> Запомнить меня</label>
  </div>
 </div>
 <div class="form-group">
  <div class="col-sm-10 col-sm-offset-2">
   <button type="submit" class="btn btn-default">Войти</button>
  </div>
 </div>
</form>

В классах мы использовали префикс sm, чтобы на смартфонах форма выглядела традиционно (рис. 2), а на больших экранах — как горизонтальная.

Автор: Влад Мержевич
Последнее изменение: 16.02.2024