Próbuję wyśrodkować mój kontener na środku strony za pomocą Bootstrap 4. Do tej pory mi się nie powiodło. Każda pomoc będzie mile widziana.
Zbudowałem go na Codepen.io , abyście mogli się nim bawić i dać mi znać, jak działa mój pomysł ...
Próbuję wyśrodkować mój kontener na środku strony za pomocą Bootstrap 4. Do tej pory mi się nie powiodło. Każda pomoc będzie mile widziana.
Zbudowałem go na Codepen.io , abyście mogli się nim bawić i dać mi znać, jak działa mój pomysł ...
Odpowiedzi:
Ważny! Środek pionowy odnosi się do wysokości rodzica
Jeśli element nadrzędny elementu, który próbujesz wyśrodkować, nie ma określonej wysokości , żadne z rozwiązań centrowania pionowego nie będzie działać!
Teraz na pionowe centrowanie w Bootstrap 4 ...
Możesz użyć nowego narzędzia Flexbox i rozmiaru, aby uzyskać container
pełną wysokość i display: flex
. Te opcje nie wymagają dodatkowego CSS (z wyjątkiem tego, że wysokość kontenera (np. Html, body) musi wynosić 100% ).
Opcja 1 align-self-center
na urządzeniu potomnym Flexbox
<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
Opcja 2 align-items-center
na urządzeniu nadrzędnym Flexbox ( .row
jest 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>
https://www.codeply.com/go/BumdFnmLuk
Opcja 3 justify-content-center
na urządzeniu nadrzędnym Flexbox ( .card
jest 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
Więcej na temat centrowania pionowego Bootstrap 4
Teraz, gdy Bootstrap 4 oferuje Flexbox i inne narzędzia , istnieje wiele podejść do wyrównania pionowego. http://www.codeply.com/go/WG15ZWC4lf
1 - Środek pionowy przy użyciu automatycznych marginesów:
Innym sposobem na wyśrodkowanie w pionie jest użycie my-auto
. Spowoduje to wyśrodkowanie elementu w jego kontenerze. Na przykład ustawia h-100
wiersz na pełną wysokość i my-auto
wyśrodkuje col-sm-12
kolumnę pionowo .
<div class="row h-100">
<div class="col-sm-12 my-auto">
<div class="card card-block w-25">Card</div>
</div>
</div>
Pionowe centrum Korzystanie Auto Marginesy Demo
my-auto
reprezentuje marginesy na pionowej osi y i jest równoważny:
margin-top: auto;
margin-bottom: auto;
2 - Centrum pionowe z Flexbox:
Ponieważ Bootstrap 4 .row
jest teraz display:flex
, możesz po prostu użyć align-self-center
dowolnej kolumny, aby wyśrodkować ją pionowo ...
<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>
lub użyj align-items-center
całości, .row
aby wyśrodkować w pionie wszystkie col-*
w rzędzie ...
<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>
Demonstracja kolumn w pionie pośrodku o różnych wysokościach
Zobacz Q / A, aby wyśrodkować, ale utrzymuj jednakową wysokość
3 - Środek pionowy za pomocą wyświetlaczy:
Bootstrap 4 ma narzędzi z ekranu , który może być używany do display:table
, display:table-cell
, display:inline
, etc .. Mogą one być stosowane z pionowych utils wyrównanie , aby wyrównać inline inline bloku lub elementy komórka tabeli.
<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>
Centrum w pionie za pomocą narzędzia Display Demo
Więcej przykładów
Pionowy obraz środkowy w <div>
pionowym środku. W. W. .Counter
Pionowy środek i dół w <div>
pionowym środku dziecko wewnątrz rodzica
Pionowe środkowe pełny ekran jumbotron
Ważny! Czy wspomniałem o wysokości?
Pamiętaj, że wyśrodkowanie w pionie odnosi się do wysokości elementu macierzystego . Jeśli chcesz wyśrodkować na całej stronie, w większości przypadków powinien to być Twój CSS ...
body,html {
height: 100%;
}
Lub użyj min-height: 100vh
( min-vh-100
w Bootstrap 4.1+) na rodzicu / kontenerze. Jeśli chcesz wyśrodkować element potomny wewnątrz rodzica. Rodzic musi mieć określoną wysokość .
Zobacz także:
Wyrównanie w pionie w bootstrap 4
Bootstrap 4 Centrum Wyrównanie w pionie i poziomie
możesz wyrównać kontener pionowo, uelastyczniając kontener nadrzędny i dodając align-items:center
:
body {
display:flex;
align-items:center;
}
html, body {height:100%}
... dodając, że to zadziałało! Dzięki!
Po bootstrap 4 klasy pomogły mi rozwiązać ten problem
<div class="col text-center justify-content-center align-self-center">
<img width=3rem src=".." alt="...">
</div>
Ponieważ żadne z powyższych nie działało dla mnie, dodaję inną odpowiedź.
Cel: Wyrównanie w pionie i poziomie div na stronie za pomocą bootstrap 4 klas Flexbox.
Krok 1: Ustaw swój skrajny div na wysokość 100vh
. To ustawia wysokość na 100% wysokości Veiwport. Jeśli tego nie zrobisz, nic innego nie zadziała. Ustawienie go na wysokość 100%
zależy tylko od rodzica, więc jeśli rodzic nie ma pełnej wysokości rzutni, nic nie będzie działać. W poniższym przykładzie ustawiłem Body na 100vh.
Krok 2: Ustaw div kontenera jako kontener Flexbox z d-flex
klasą.
Krok 3: Wyśrodkuj div poziomo z justify-content-center
klasą.
Krok 4: Wyśrodkuj div pionowo za pomocą align-items-center
Krok 5: Uruchom stronę, wyświetl pionowy i poziomy wyśrodkowany div.
Zauważ, że nie ma żadnej specjalnej klasy, która musiałaby być ustawiona na samym środku div (div dziecka)
<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>
100vh
sztuczka bardzo mi pomogła. Bootstrap zapewnia również vh-100
klasę do tego.
.jumbotron {
position: relative;
top: 50%;
transform: translateY(-50%);
}
Wypróbowałem wszystkie odpowiedzi tutaj, ale okazało się, że jest różnica między h-100 a vh-100 Oto moje rozwiązanie:
<div className='container vh-100 d-flex align-items-center col justify-content-center'>
<div className="">
...
</div>
</div >
W Bootstrap 4 (beta) użyj align-middle
. Zobacz dokumentację Bootstrap 4 na temat wyrównania pionowego :
Zmień wyrównanie elementów za pomocą narzędzi do wyrównania pionowego . Należy pamiętać, że wyrównanie w pionie wpływa tylko na elementy śródliniowe , śródliniowe , śródliniowe i komórkowe .
Wybierz z
.align-baseline
,.align-top
,.align-middle
,.align-bottom
,.align-text-bottom
, i.align-text-top
w razie potrzeby.
<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">Today’s 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>
<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>
W tej linii odbywa się magia <div class="col-md-6 my-auto">
, my-auto
która wyśrodkuje zawartość kolumny. Działa to doskonale w sytuacjach takich jak przykładowy kod powyżej, w którym możesz mieć obraz o zmiennej wielkości i musisz mieć tekst w kolumnie do odpowiedniej linii z nim.
<!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>
flex-grow-1
klasy do karty zapobiega jej kurczeniu się.
Wyrównanie w pionie Za pomocą tego 4 klas początkowych:
rodzic: d-table
I
child: d-table-cell i align-middle & text-center
na przykład:
<div class="tab-icon-holder d-table bg-light">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>
a jeśli chcesz, aby rodzic był w kręgu:
<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>
które dwie niestandardowe klasy css są następujące:
.tab-icon-holder {
width: 3.5rem;
height: 3.5rem;
}
.rounded-circle {
border-radius: 50% !important
}
Ostateczne użycie może wyglądać na przykład:
<div class="col-md-5 mx-auto text-center">
<div class="d-flex justify-content-around">
<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>
<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Lg.png" height="30rem">
</div>
</div>
...
</div>
</div>
Umieść zawartość w pojemniku Flexbox o wysokości 100%, tj. H-100. Następnie uzasadnij zawartość centralnie za pomocą klasy justify-content-center .
<section class="container h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<h1 class="display-3">Hello, Malawi!</h1>
</div>
</section>
use .my-auto
(bootsrap4) css class on yor div
W Bootstrap 4.1.3:
To działało dla mnie, gdy próbowałem wyśrodkować plakietkę bootstrap wewnątrz tytułu container > row > column
obok h1
tytułu.
To, co działało, to prosty css:
.my-valign-center {
vertical-align: 50%;
}
lub
<span class="badge badge-pill" style="vertical-align: 50%;">My Badge</span>