Центр вертикального выравнивания в бутстрапе 4
Я пытаюсь центрировать мой Контейнер в середине страницы, используя Bootstrap 4. Я до сих пор не добился успеха. Любая помощь будет оценена.
Я создал его на Codepen.io, чтобы вы, ребята, могли поиграть с ним и дать мне знать, что у меня получается из идей...
var currentAuthor = "";
var currentQuote = "";
function randomQuote() {
$.ajax({
url: "https://api.forismatic.com/api/1.0/?",
dataType: "jsonp",
data: "method=getQuote&format=jsonp&lang=en&jsonp=?",
success: function( response ) {
$("#quote-content").html('<h2 id="quote-content" class="display-5"><i class="fa fa-quote-left" aria-hidden="true"> ' + response.quoteText + ' <i class="fa fa-quote-right" aria-hidden="true"></i></h2>');
$("#quote-author").html('<p id="quote-author" class="lead"><em>' + response.quoteAuthor + '</em></p>');
currentAuthor = response.quoteAuthor;
currentQuote = response.quoteText
}
});
}
function openURL(url){
window.open(url,'Share', 'width=550, height=400, toolbar=0, scrollbars=1 ,location=0 ,statusbar=0,menubar=0, resizable=0');
}
function tweetQuote(){
openURL('https://twitter.com/intent/tweet?hashtags=quotes,freecodecamp&related=freecodecamp&text=' + encodeURIComponent('"' + currentQuote + '" - ' + currentAuthor));
}
$(document).ready(function () {
randomQuote();
$("#get-another-quote-button").click(function(){
randomQuote();
});
$('#tweet').on('click', function() {
tweetQuote();
});
});
html, body {
background-image: url("https://www.mylinea.com/wp-content/uploads/beautiful-trees-stock-photo-055.jpg");
background-color: #17234E;
margin-bottom: 0;
min-height: 30%;
background-repeat: no-repeat;
background-position: center;
-webkit-background-size: cover;
background-size: cover;
}
.btn-new-quote {
color: #0C0C0D;
background-color: transparent;
border-color: #414147;
}
.btn-new-quote:hover {
color: #0C0C0D;
background-color: #9A989E;
border-color: #0C0C0D;
}
#tweet {
color: RGB(100, 100, 100);
}
#tweet:hover {
color: RGB(50, 50, 50);
}
.jumbotron {
position: relative;
top: 50%;
transform: translateY(-50%);
opacity: .85;
border-color: RGB(50, 50, 50);
padding-bottom: 8px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="#" onclick="location.href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css'; return false;">
<div class="container">
<div class="row justify-content-center align-self-center">
<div class="col-sm-6">
<div class="jumbotron vertical-center text-center">
<h2 id="quote-content" class="display-5"><i class="fa fa-quote-left" aria-hidden="true"></i><i class="fa fa-quote-right" aria-hidden="true"></i></h2>
<p id="quote-author" class="lead"><em></em></p>
<hr class="my-2">
<div class="row align-items-center justify-content-between">
<div class="col-sm-1-4 text-left">
<a id="tweet" href="#">
<h2 class="display-4"><i class="fa fa-twitter" aria-hidden="true"></i></h2>
</a>
</div>
<div class="col-sm-1-4 text-right">
<button id="get-another-quote-button" type="button" class="btn btn-outline-secondary btn-new-quote">Don't Quote Me on This...</button>
</div>
</div>
</div>
</div>
</div>
</div>
Ответы
Ответ 1
Важно! Вертикальныйцентр относительно высоты родительского элемента
Если родительский элемент элемента, который вы пытаетесь отцентрировать, не имеет определенного высота, ни одно из решений вертикального центрирования не будет работать!
Теперь перейдем к вертикальному центру в Bootstrap 4...
Вы можете использовать новый flexbox & Размер утилиты, чтобы сделать container
полной высоты и display: flex
. Эти параметры не требуют дополнительного CSS (за исключением того, что высота контейнера (т.е. Html, body) должна составлять 100%).
Вариант 1 align-self-center
для flexbox child
<div class="container d-flex h-100">
<div class="row justify-content-center align-self-center">
I'm vertically centered
</div>
</div>
https://www.codeply.com/go/fFqaDe5Oey
Вариант 2 align-items-center
для родительского элемента flexbox (.row
- display:flex; flex-direction:row
)
<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="jumbotron">
I'm vertically centered
</div>
</div>
</div>
</div>
![enter image description here]()
https://www.codeply.com/go/BumdFnmLuk
Вариант 3 justify-content-center
для родительского элемента flexbox (.card
- display:flex;flex-direction:column
)
<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="card h-100 border-primary justify-content-center">
<div>
...card content...
</div>
</div>
</div>
</div>
</div>
https://www.codeply.com/go/3gySSEe7nd
Подробнее о Bootstrap 4 Вертикальное центрирование
Теперь, когда Bootstrap 4 предлагает flexbox и другие утилиты, существует множество подходов к вертикали.
выравнивание. http://www.codeply.com/go/WG15ZWC4lf
1 - вертикальный центр с использованием авто полей:
Другой способ вертикального центрирования - использовать my-auto
. Это будет центрировать элемент внутри контейнера. Например, h-100
делает строку полной высоты, а my-auto
будет вертикально центрировать столбец col-sm-12
.
<div class="row h-100">
<div class="col-sm-12 my-auto">
<div class="card card-block w-25">Card</div>
</div>
</div>
Вертикальный центр с использованием автоматических полей Демонстрация
my-auto
представляет поля на вертикальной оси Y и эквивалентно:
margin-top: auto;
margin-bottom: auto;
2 - Вертикальный центр с Flexbox:
![vertical center grid columns]()
Поскольку Bootstrap 4 .row
теперь является display:flex
, вы можете просто использовать align-self-center
в любом столбце для его вертикального центрирования...
<div class="row">
<div class="col-6 align-self-center">
<div class="card card-block">
Center
</div>
</div>
<div class="col-6">
<div class="card card-inverse card-danger">
Taller
</div>
</div>
</div>
или используйте align-items-center
на всем .row
, чтобы выровнять по центру все col-*
по вертикали в ряду...
<div class="row align-items-center">
<div class="col-6">
<div class="card card-block">
Center
</div>
</div>
<div class="col-6">
<div class="card card-inverse card-danger">
Taller
</div>
</div>
</div>
Вертикальный центр столбцов различной высоты Демонстрация
Посмотрите это Q/A по центру, но сохраняйте равную высоту
3 - Вертикальный центр с использованием утилит дисплея:
Bootstrap 4 имеет утилиты отображения, которые можно использовать для display:table
, display:table-cell
, display:inline
и т.д. Они могут использоваться с утилитами вертикального выравнивания для выравнивания по линии, элементы встроенного блока или ячейки таблицы.
<div class="row h-50">
<div class="col-sm-12 h-100 d-table">
<div class="card card-block d-table-cell align-middle">
I am centered vertically
</div>
</div>
</div>
Вертикальный центр с использованием утилиты отображения Демонстрация
Больше примеров
Вертикальное центральное изображение в <div>
Вертикальный центр .row в .container
Вертикальный центр и дно в <div>
Вертикальный центр ребенка внутри родителя
Вертикальный центр полноэкранного jumbotron
Важно! Яупоминал рост?
Помните, что вертикальное центрирование относительно высоты родительского элемента. Если вы хотите сосредоточиться на всей странице, в большинстве случаев это должен быть ваш CSS...
body,html {
height: 100%;
}
Или используйте min-height: 100vh
(min-vh-100
в Bootstrap 4. 1+) на родительском/контейнере. Если вы хотите центрировать дочерний элемент внутри родителя. Родитель должен иметь определенную высоту.
Также см.:
Вертикальное выравнивание в начальной загрузке 4
Bootstrap 4 по центру вертикального и горизонтального выравнивания
Ответ 2
вы можете вертикально выровнять свой контейнер, создав контейнер родительского контейнера и добавив align-items:center
:
body {
display:flex;
align-items:center;
}
Обновлено перо
Ответ 3
После начальной загрузки 4 класса помогли мне решить эту проблему
<div class="col text-center justify-content-center align-self-center">
<img width=3rem src=".." alt="...">
</div>
Ответ 4
Поскольку ни один из вышеперечисленных не работал для меня, я добавляю еще один ответ.
Цель: вертикально и горизонтально выровнять div на странице, используя классы bootbox 4-го класса.
Шаг 1: Установите свой внешний div на высоту 100vh
. Это устанавливает высоту до 100% высоты Veiwport. Если вы этого не сделаете, больше ничего не получится. Установка его на высоту 100%
относится только к родительскому, поэтому, если родительский элемент не является полной высотой окна просмотра, ничего не будет работать. В приведенном ниже примере я установил Body на 100vh.
Шаг 2. Установите контейнер контейнера в контейнер flexbox с классом d-flex
.
Шаг 3: Центр div горизонтально с классом justify-content-center
.
Шаг 4: Центрируйте div по вертикали с align-items-center
Шаг 5: Запустите страницу, просмотрите свой вертикальный и горизонтально-центрированный div.
Обратите внимание, что нет специального класса, который должен быть установлен на самом центре с центром (дочерний div)
<body style="background-color:#f2f2f2; height:100vh;">
<div class="h-100 d-flex justify-content-center align-items-center">
<div style="height:600px; background-color:white; width:600px;">
</div>
</div>
</body>
Ответ 5
.jumbotron {
position: relative;
top: 50%;
transform: translateY(-50%);
}
Ответ 6
В Bootstrap 4 (бета) используйте align-middle
. См. Бутстрап 4 Документация по вертикальному выравниванию:
Измените выравнивание элементов с помощью вертикального выравниваниякоммунальные услуги. Обратите внимание, что вертикальное выравнивание влияет только на встроенный, встроенный блок, встроенный и элементы таблицы.
Выберите .align-baseline
, .align-top
, .align-middle
, .align-bottom
, .align-text-bottom
и .align-text-top
по мере необходимости.
Ответ 7
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row align-items-center justify-content-center" style="height:100vh;">
<div>Center Div Here</div>
</div>
</div>
</body>
</html>
Ответ 8
<div class="col-lg-5 col-sm-5 offset-1 d-flex">
<div class="offer-txt justify-content-center align-self-center">
<span class="inner-title">Our Offer</span>
<h2 class="section-title">Todays Special </h2>
<p>One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly.</p>
</div>
</div>
![enter image description here]()
Ответ 9
Я сделал это с помощью Bootstrap 4.3.1
:
<div class="d-flex vh-100">
<div class="d-flex w-100 justify-content-center align-self-center">
I'm in the middle
</div>
</div>
Ответ 10
Я попробовал все ответы здесь, но обнаружил здесь разницу между h-100 и vh-100. Вот мое решение:
<div className='container vh-100 d-flex align-items-center col justify-content-center'>
<div className="">
...
</div>
</div >
Ответ 11
/* Вы должны добавить высоту 100vh */
Центр
Ответ 12
<div class="row">
<div class="col-md-6">
<img src="/assets/images/ebook2.png" alt="" class="img-fluid">
</div>
<div class="col-md-6 my-auto">
<h3>Heading</h3>
<p>Some text.</p>
</div>
</div>
В этой строке происходит волшебство <div class="col-md-6 my-auto">
, my-auto
будет центрировать содержимое столбца. Это прекрасно работает в таких ситуациях, как приведенный выше пример кода, где у вас может быть изображение переменного размера, и вам нужно, чтобы текст в столбце находился справа от него.
Ответ 13
В Bootstrap 4.1.3:
Это работало для меня, когда я пытался центрировать значок начальной загрузки внутри container > row > column
рядом с заголовком h1
.
Что делало простую css:
.my-valign-center {
vertical-align: 50%;
}
или же
<span class="badge badge-pill" style="vertical-align: 50%;">My Badge</span>
Ответ 14
используйте .my-auto
(bootsrap4) класс CSS на вашем Div