Importante! O centro vertical é relativo à altura do pai
Se o pai do elemento que você está tentando centralizar não tiver altura definida
, nenhuma das soluções de centralização vertical funcionará!
Agora, na centralização vertical no Bootstrap 4 ...
Você pode usar os novos utilitários flexbox e size para criar a container
altura total e display: flex
. Essas opções não requerem CSS extra (exceto que a altura do contêiner (por exemplo: html, body) deve ser 100% ).
Opção 1 align-self-center
no filho 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
Opção 2 align-items-center
no pai do 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>
https://www.codeply.com/go/BumdFnmLuk
Opção 3 justify-content-center
no pai do 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
Mais sobre a centralização vertical do Bootstrap 4
Agora que o Bootstrap 4 oferece flexbox e outros utilitários , existem muitas abordagens para o alinhamento vertical. http://www.codeply.com/go/WG15ZWC4lf
1 - Centro vertical usando margens automáticas:
Outra maneira de centralizar verticalmente é usar my-auto
. Isso centralizará o elemento dentro de seu contêiner. Por exemplo, h-100
aumenta a altura da linha e my-auto
centraliza verticalmente a col-sm-12
coluna.
<div class="row h-100">
<div class="col-sm-12 my-auto">
<div class="card card-block w-25">Card</div>
</div>
</div>
Demonstração de centro vertical usando margens automáticas
my-auto
representa margens no eixo y vertical e é equivalente a:
margin-top: auto;
margin-bottom: auto;
2 - Centro vertical com Flexbox:
Desde o Bootstrap 4 .row
é agora, display:flex
você pode simplesmente usar align-self-center
em qualquer coluna para centralizá-lo verticalmente ...
<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>
ou use align-items-center
em toda a.row
para alinhar verticalmente o centro col-*
na linha ...
<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>
Demonstração de colunas de altura vertical no centro vertical
Veja este Q / A para centralizar, mas mantenha a mesma altura
3 - Centro vertical usando os utilitários de exibição:
Bootstrap 4 tem utils de visualização que podem ser utilizados para display:table
, display:table-cell
, display:inline
, etc .. Estes podem ser usados com os utils alinhamento vertical para alinhar em linha, em linha ou bloco de elementos de célula de tabela.
<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>
Centro vertical usando os utilitários de exibição demonstração dos
Mais exemplos
Imagem central vertical no <div>
centro vertical .row no .container
Centro vertical e inferior no <div>
filho do centro vertical dentro do pai pai Vertical jumbotron em
tela cheia do centro
Importante! Eu mencionei altura?
Lembre-se de que a centralização vertical é relativa à altura do elemento pai . Se você deseja centralizar a página inteira, na maioria dos casos, esse deve ser o seu CSS ...
body,html {
height: 100%;
}
Ou use min-height: 100vh
( min-vh-100
no Bootstrap 4.1+) no pai / contêiner. Se você deseja centralizar um elemento filho dentro do pai. O pai deve ter uma altura definida .
Veja também:
Alinhamento vertical no bootstrap 4
Bootstrap 4 Center, alinhamento vertical e horizontal