На адаптивной странице начальной загрузки как центрировать div

132

разместите div в центре адаптивной страницы

Мне нужно создать отзывчивую страницу с помощью начальной загрузки, разместив div в центре страницы, как в приведенном ниже макете.

Рама Прия
источник
stackoverflow.com/questions/9554724/…
Кенни Томпсон
мне нужно центрировать div с текстом (адаптивный дизайн с использованием начальной загрузки), который должен присутствовать внутри другого центрированного div полной ширины col-lg-12, как в макете. было бы полезно, если бы я мог получить образец кода в скрипке
Rama Priya

Ответы:

173

ОБНОВЛЕНИЕ для Bootstrap 4

Упрощенное выравнивание вертикальной сетки с помощью flex-box

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css');
html,
body {
  height: 100%
}
<div class="h-100 row align-items-center">
  <div class="col" style="background:red">
    TEXT
  </div>
</div>

Решение для Bootstrap 3

@import url('http://getbootstrap.com/dist/css/bootstrap.css');
 html, body, .container-table {
    height: 100%;
}
.container-table {
    display: table;
}
.vertical-center-row {
    display: table-cell;
    vertical-align: middle;
}
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.0/bootstrap.min.js"></script>

<div class="container container-table">
    <div class="row vertical-center-row">
        <div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
    </div>
</div>

Это простой пример горизонтального и вертикального div с центром на всех размерах экрана.

ppollono
источник
41
Может, class="col-xs-4 col-xs-offset-4"хватит.
L105
Я должен расположить div col-lg-12 вертикально по центру для всех размеров экрана
Рама Прия
1
Я нашел решение для вас, проверьте эту скрипку jsfiddle.net/Palapas/52VtD/687, контейнер должен иметь высоту 100%, иначе вам нужно использовать абсолютную позицию
ppollono
45

CSS:

html,
body {
    height: 100%;
}

.container {
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

HTML:

<div class="container">
  <div>
    example
  </div>
</div>

Пример скрипки

vocasle
источник
1
это решение не работает, когда я открываю свой сайт на мобильном телефоне.
codeinprogress
2
Привет, какой браузер вы использовали? Вы загружали таблицы стилей Bootstrap и javascript? Он работает в Firefox и Chrome. Протестировано на экранах всех размеров.
вокал
Я проверил это, изменив размер своего браузера, а также с помощью адаптивного средства проверки веб-сайтов. Работает для меня.
Rocky Kev
1
это исправление нарушает стили начальной загрузки по умолчанию
ppollono
21

В бутстрапе 4

чтобы центрировать дочерние элементы по горизонтали , используйте класс bootstrap-4

justify-content-center

чтобы центрировать дочерние элементы по вертикали , используйте класс bootstrap-4

 align-items-center

но помните, не забудьте использовать класс d-flex с этим служебным классом bootstrap-4, например

<div class="d-flex justify-content-center align-items-center" style="height:100px;">
    <div class="bg-primary">MIDDLE</div>    
</div>

Примечание: обязательно добавьте утилиты bootstrap-4, если этот код не работает


источник
11

Обновление для Bootstrap 4

Теперь, когда Bootstrap 4 является flexbox, вертикальное выравнивание стало проще. Учитывая, что div flexbox с полной высотой, мы только my-autoдля равных полей сверху и снизу ...

<div class="container h-100 d-flex justify-content-center">
    <div class="jumbotron my-auto">
      <h1 class="display-3">Hello, world!</h1>
    </div>
</div>

http://codeply.com/go/ayraB3tjSd/bootstrap-4-vertical-center


Вертикальный центр в Bootstrap 4

Zim
источник
6

Вам не нужно ничего менять в CSS, вы можете написать это прямо в классе, и вы получите результат.

<div class="col-lg-4 col-md-4 col-sm-4 container justify-content-center">
  <div class="col" style="background:red">
    TEXT
  </div>
</div>

введите описание изображения здесь

сойка
источник
4

без таблицы отображения и без начальной загрузки, я бы предпочел это

<div class="container container-table">
    <div class="row vertical-center-row">
        <div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
    </div>
</div>


 html, body, .container-table {
    height: 100%;
}
.container-table {
    width:100vw;
  height:150px;
  border:1px solid black;
}
.vertical-center-row {
   margin:auto;
  width:30%;
  padding:63px;
  text-align:center;

}

http://codepen.io/matoeil/pen/PbbWgQ

Matoeil
источник
2

Хороший ответ пполлоно. Я просто играл и получил решение получше. CSS останется прежним, то есть:

html, body, .container {
    height: 100%;
}
.container {
    display: table;
    vertical-align: middle;
}
.vertical-center-row {
    display: table-cell;
    vertical-align: middle;
}

Но для HTML:

<div class="container">
    <div class="vertical-center-row">
        <div align="center">TEXT</div>
    </div>
</div>

Этого было бы достаточно.

simranjazz
источник
2

Не лучший способ, но все равно будет работать

<div class="container-fluid h-100">
<div class="row h-100">
<div class="col-lg-12"></div>
<div class="col-lg-12">
<div class="row h-100">
  <div class="col-lg-4"></div>
  <div class="col-lg-4 border">
    This div is in middle
  </div>
  <div class="col-lg-4"></div>
</div>

</div>
<div class="col-lg-12"></div>
</div>

</div>
Тарун Рават
источник
1

Я думаю, что самый простой способ выполнить разметку с помощью начальной загрузки выглядит так:

<section>
<div class="container">
    <div class="row">
        <div align="center">
            <div style="max-width: 200px; background-color: blueviolet;">
                <div>
                    <h1 style="color: white;">Content goes here</h1>
                </div>
            </div>
        </div>
    </div>
</div>

все, что я сделал, это добавил слои div, которые позволили мне центрировать div, но поскольку я не использую проценты, вам нужно указать максимальную ширину div, которая будет центрироваться.

Вы можете использовать этот же метод для центрирования более чем одного столбца, вам просто нужно добавить больше слоев div:

<div class="container">
    <div class="row">
        <div align="center">
            <div style="max-width: 400px; background-color: blueviolet;">
                <div class="col-md-12 col-sm-12 col-xs-12" style="background-color: blueviolet;">
                    <div class="col-md-8 col-sm-8 col-xs-12" style="background-color: darkcyan;">
                        <h1 style="color: white;">Some content</h1>
                    </div>
                    <div class="col-md-4 col-sm-4 col-xs-12" style="background-color: blue;">
                        <p style="color: white;">More content</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Примечание: я добавил div со столбцом 12 для md, sm и xs, если вы этого не сделаете, первый div с цветом фона (в данном случае "blueviolet") рухнет, вы сможете увидеть дочерние div , но не цвет фона.

TheOneAndOnly ME
источник
1

Для актуальной версии Bootstrap 4.3.1 используйте

Стиль

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<style type="text/css">
html, body {
    height: 100%;
}
</style>

Код

<div class="h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<!-- example content -->
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">Title</h4>
<p>Desc</p>
</div>
<!-- ./example content -->
</div>
</div

источник
1

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

<html lang="en">
<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
    <div class="d-flex justify-content-center align-items-center bg-secondary w-100" style="height: 300px;">
        <div class="bg-primary" style="width: 200px; height: 50px;"></div>
    </div>
</body>
</html>

Санка Санджива
источник
1

В Bootstrap 4 используйте:

<div class="d-flex justify-content-center">...</div>

Вы также можете изменить положение в зависимости от того, что хотите:

<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>

Ссылка здесь

Wariored
источник
-1

Вот простые правила CSS, которые помещают любой div в центр

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/

Sravan
источник
Не могли бы вы расширить свой ответ? Ссылки обычно устаревают со временем.
orique
2
Кроме того, это не «способ начальной загрузки» для достижения этой цели.
FuriousFolder
-1

Самое простое решение - добавить по одному пустому столбцу с обеих сторон, как показано ниже:

  <div class="row form-group">

    <div class="col-3"></div>

    <ul class="list-group col-6">
      <li class="list-group-item active">Yuvraj Patil</li>
    </ul>

    <div class="col-3"></div>
  </div>
Юврай Патил
источник
-2

jsFiddle

HTML :

<div class="container" id="parent">
  <div class="row">
    <div class="col-lg-12">text
      <div class="row ">
        <div class="col-md-4 col-md-offset-4" id="child">TEXT</div>
      </div>
    </div>
  </div>
</div>

CSS :

#parent {    
    text-align: center;
}
#child {
    margin: 0 auto;
    display: inline-block;
    background: red;
    color: white;
}
rbsthlm
источник