Подтвердить что ты не робот

Почему группы форм имеют отрицательный запас в Bootstrap?

У меня есть этот очень простой код, используя Bootstrap 3:

<html>
  <body>
    <main class="container" role="main">
      <form class="simple_form form-horizontal">
         <div class="form-group text required campaign_url">
           <label class="text required control-label" for="campaign_url"><abbr title="required">*</abbr> Url</label>
           <textarea class="text required form-control" name="campaign[url]" id="campaign_url"></textarea>
         </div>

и он выглядит следующим образом:

enter image description here

Обратите внимание, что метки и входы приклеиваются влево. Осмотрев эти элементы, я нашел это:

.form-horizontal .form-group {
  margin-left: -15px;
  margin-right: -15px;
}

Почему это? Я знаю, что это тривиально удалить, но это заставляет меня задаться вопросом, не так ли, как я использую Bootstrap. Как его использовать?

4b9b3361

Ответ 1

Это происходит потому, что вы используете form-horizontal которая предназначена для использования в качестве строки вместе с col-* для макета. Из документации по начальной загрузке:

Используйте предопределенные классы сетки Bootstrap, чтобы выровнять метки и группы элементов управления формы в горизонтальном макете, добавив в форму .form-horizontal (который не обязательно должен быть <form>). Это меняет .form-groups на поведение строк сетки, поэтому нет необходимости в .row.

Поэтому, если вы просто удалите form-horizontal отрицательное поле исчезнет.

http://codeply.com/go/QQnqgfKv9v

Ответ 2

Я просто провожу некоторое время, чтобы понять эту отрицательную разницу. Оказывается, что обычно вы встраиваете горизонтальную форму в контейнер или контейнерную жидкость с полем в 15px, а группы форм используют -15px.

Настоящая проблема заключается в том, что вам не хватает <div class="col-..."> чтобы обернуть ярлык и элементы управления формой.

Они добавляют некоторые отступы влево + вправо, и это будет отображаться правильно.

Что-то вроде:

<html>
  <body>
    <main class="container" role="main">
      <form class="simple_form form-horizontal">
        <div class="form-group text required campaign_url">
          <div class="col-md-12">
            <label class="text required control-label" for="campaign_url"><abbr title="required">*</abbr> Url</label>
          </div>
          <div class="col-md-12">
            <textarea class="text required form-control col-md-12" name="campaign[url]" id="campaign_url"></textarea>
          </div>
        </div>