Центрирование полей ввода Bootstrap

Я новичок в этом, особенно в Bootstrap. У меня есть этот код:

<div class="row">
    <div class="col-lg-3">
       <div class="input-group">
         <input type="text" class="form-control">
         <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
         </span>
       </div><!-- /input-group -->
    </div><!-- /.col-lg-6 -->
</div><!-- /.row -->

Мне нужно поместить это поле ввода и кнопку в центр страницы:

Это не сработало: "margin-left: auto; margin-right:auto;"

На веб-странице это выглядит так

У кого-нибудь есть какие-либо идеи?


person Ivan Vulović    schedule 03.08.2013    source источник
comment
используйте контейнерный класс bootstrap.   -  person Ayush    schedule 03.08.2013
comment
Для Bootstrap используйте justify-content-center.   -  person TheGhoul    schedule 09.06.2019


Ответы (10)


Вы можете использовать смещения, чтобы столбец выглядел центрированным, просто используйте смещение, равное половине оставшегося размера строки, в вашем случае я бы предложил использовать col-lg-4 с col-lg-offset-4, это (12-4)/2.

<div class="row">
    <div class="col-lg-4 col-lg-offset-4">
        <div class="input-group">
            <input type="text" class="form-control" /> 
            <span class="input-group-btn">
                <button class="btn btn-default" type="button">Go!</button>
            </span>
        </div><!-- /input-group -->
    </div><!-- /.col-lg-4 -->
</div><!-- /.row -->

Демонстрационная скрипта

Обратите внимание, что этот метод работает только для четных размеров столбцов (.col-X-2, .col-X-4, col-X-6 и т. д.), если вы хотите поддерживать любой размер, вы можете использовать margin: 0 auto;, но вам также нужно удалить плавающее из элемента, я рекомендую пользовательский Класс CSS, подобный следующему:

.col-centered{
    margin: 0 auto;
    float: none;
}

Демонстрационная скрипта

person Omar    schedule 03.08.2013
comment
+1 Лучшее решение, которое предлагает бустрап для решения вопроса. - person lvarayut; 10.08.2013
comment
на самом деле ваше решение основано только на col-lg-4 col-lg-offset-4 (также исправьте col-lg-offset-4). Поэтому в вашем решении вам нужно вручную рассчитать смещение на основе размера col-. Если он был рассчитан неправильно, text-center не поможет центрировать элемент, поэтому здесь он бесполезен, так как я играл с этим в jsfiddle. жду отзывов. - person static; 16.10.2013
comment
@static Это было опубликовано во время периода Release Candidate Bootstrap 3, и тогда не было различий в размерах для смещений, поэтому скрипка работала с col-offset-4, я не знаю, почему в своем ответе я написал col-lg-offset-4, хотя я помню, что были некоторые расхождения между документацией и фактическими файлами Bootstrap тогда, поэтому, возможно, я их перепутал. - person Omar; 16.10.2013
comment
@static Я обновил свой ответ, я удалил text-center, потому что он не служил никакой цели, поскольку единственным содержимым здесь является блочный элемент, я также добавил лучшее объяснение подхода со смещением и предоставил новый метод центрирования, который поддерживает любой размер столбца . - person Omar; 16.10.2013
comment
Да, я считаю, что свойство text-center применяется к встроенным элементам внутри блочного элемента. - person Donato; 23.06.2016
comment
Спасибо за это, это прекрасно работает с ASP.NET Core! - person Ginkgo; 29.07.2016
comment
В более новых версиях начальной загрузки нет col-lg-offset-[num], он заменен простым offset-lg-[num]. - person Ivanp; 17.04.2019

Лучший способ центрировать элемент — использовать вспомогательный класс .center-block. Но ваша загрузочная версия должна быть не ниже 3.1.1

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet" />
<div class="row">
  <div class="col-lg-3 center-block">
    <div class="input-group">
      <input type="text" class="form-control">
      <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
         </span>
    </div>
    <!-- /input-group -->
  </div>
  <!-- /.col-lg-6 -->
</div>
<!-- /.row -->

person Shwan Namiq    schedule 28.11.2015

Попробуйте применить этот стиль к вашему div class="input-group":

text-align:center;

Посмотреть его: Fiddle.

person gsubiran    schedule 03.08.2013

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

        <div class="row">
            <div class="col-lg-4"></div>
            <div class="col-lg-4">
                <div class="input-group">
                    <input type="text" class="form-control" /> 
                    <span class="input-group-btn">
                        <button class="btn btn-default" type="button">Go!</button>
                    </span>
                </div><!-- /input-group -->
            </div><!-- /.col-lg-4 -->
            <div class="col-lg-4"></div>
        </div><!-- /.row -->

Это означает, что 4 + 4 + 4 = 12... так что второй div будет таким образом посередине.

Пример: http://jsfiddle.net/jpGwm/embedded/result/

person Ivan Vulović    schedule 04.08.2013
comment
Вам не нужны пустые теги <div>, избегайте необходимости дополнительной разметки, используя смещение, как я показал в своем ответе. - person Omar; 10.08.2013
comment
Просто сохраните средний div, например: ‹div class=col-lg-4 col-lg-offset-4›....‹/div› Смещение в основном добавляет тот пустой div, который вы написали... без необходимости Напиши это - person ganders; 25.04.2017

Для меня это решение хорошо сработало для центрирования поля ввода в TD:

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.css" rel="stylesheet" />
<td style="background:#B3AEB5;">
  <div class="form-group text-center">
    <div class="input-group" style="margin:auto;">
      <input type="month" name="p2" value="test">
    </div>
  </div>
</td>

person Cagy79    schedule 07.12.2015

Использование смещений нежелательно для адаптивных веб-сайтов.

Используйте flexbox с выравниванием по центру содержимого:

<div class="row d-flex justify-content-center">
  <input></input>
</div>
person Phong Phuong    schedule 27.10.2020
comment
Это сработало для меня с Bootstrap 5.0. Я применил его к <div class="form-group">...</div>, где был мой ввод. Спасибо! - person Curt Keisler; 28.02.2021
comment
Это также сработало для меня. Благодарю вас! - person Levesque Xylia; 07.07.2021

Попробуйте использовать этот код:

.col-lg-3 {
  width: 100%;
}
.input-group {
   width: 200px; // for exemple
   margin: 0 auto;
}

если это не сработало, используйте !важно

person RDK    schedule 03.08.2013
comment
Весь смысл бутстрапа в том, что .col-lg-3 занимает 3 столбца. Изменение ширины на 100% ломает все это. - person Mirror318; 20.03.2016

Ну, в моем случае следующее работает нормально

<div class="card-body p-2">
  <div class="d-flex flex-row justify-content-center">
     <div style="margin: auto;">
        <input type="text" autocomplete="off"
          style="max-width:150px!important; "
          class="form-control form-control-sm font-weight-bold align-self-center w-25" id="dtTechState">
     </div>
  </div>
</div>
person DmitryBoyko    schedule 03.12.2020

Для начальной загрузки 4 используйте offset-4, см. ниже.

<div class="mx-auto">        
        <form class="mx-auto" action="/campgrounds" method="POST">
            <div class="form-group row">                
                <div class="col-sm-4 offset-4">
                    <input class="form-control" type="text" name="name" placeholder="name">
                </div>
            </div>
            <div class="form-group row">               
                <div class="col-sm-4 offset-4">
                    <input class="form-control" type="text" name="picture" placeholder="image url">
                </div>
            </div>
            <div class="form-group row">
                    <div class="col-sm-4 offset-4">
                        <input class="form-control" type="text" name="description" placeholder="description">
                    </div>
                </div>
            <button class="btn btn-primary" type="submit">Submit!</button>
            <a class="btn btn-secondary"  href="/campgrounds">Go Back</a>
        </form>      
    </div>
person azam1417    schedule 06.08.2020

в b4 вы также можете использовать d-flex justify-content-center

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<div class="form-group">
                
    <div class="d-flex justify-content-center">
    
    <input type="text" class="form-control">
    
     <span class="input-group-btn">
         <button class="btn btn-default" type="button">Go!</button>
     </span>
     
    </div>      
        
</div>

person Italo Hernández    schedule 24.06.2021