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
você pode alinhar verticalmente seu contêiner, flexionando o contêiner pai e adicionando
align-items:center
:Caneta atualizada
fonte
html, body {height:100%}
... adicionando isso fez funcionar! Obrigado!Após o bootstrap, 4 classes me ajudaram a resolver isso
fonte
Como nenhuma das opções acima funcionou para mim, estou adicionando outra resposta.
Objetivo: alinhar vertical e horizontalmente uma div em uma página usando as 4 classes flexbox de autoinicialização.
Etapa 1: defina sua div mais externa para uma altura de
100vh
. Isso define a altura para 100% da altura do Veiwport. Se você não fizer isso, nada mais funcionará. A configuração para uma altura de100%
é apenas relativa ao pai, portanto, se o pai não tiver a altura total da janela de visualização, nada funcionará. No exemplo abaixo, defino o corpo como 100vh.Etapa 2: defina o contêiner div como o contêiner flexbox da
d-flex
classeEtapa 3: centralize a div horizontalmente com a
justify-content-center
turma.Etapa 4: centralize a div verticalmente com o
align-items-center
Etapa 5: execute a página, visualize sua div centralizada na vertical e na horizontal.
Observe que não há classe especial que precise ser definida no próprio div centralizado (o div filho)
fonte
100vh
truque me ajudou muito. O Bootstrap também fornece avh-100
classe para isso.fonte
Eu tentei todas as respostas aqui, mas descobri aqui a diferença entre h-100 e vh-100 Aqui está minha solução:
fonte
No Bootstrap 4 (beta), use
align-middle
. Consulte a documentação do Bootstrap 4 sobre alinhamento vertical :fonte
fonte
Nesta linha é onde a mágica acontece
<div class="col-md-6 my-auto">
, omy-auto
centro será o conteúdo da coluna. Isso funciona muito bem em situações como o exemplo de código acima, em que você pode ter uma imagem de tamanho variável e precisa ter o texto na coluna na linha correta.fonte
Fiz dessa maneira com o Bootstrap
4.3.1
:fonte
fonte
flex-grow-1
classe ao cartão impede que ele encolha .Alinhamento vertical Usando este bootstrap 4 classes:
por exemplo:
e se você quiser que o pai seja um círculo:
quais são as duas classes CSS personalizadas:
O uso final pode ser como, por exemplo:
fonte
Coloque o seu conteúdo em um contêiner flexbox 100% alto, ou seja, h-100. Justifique o conteúdo centralmente usando a classe justify-content-center .
fonte
.my-auto
classe css use (bootsrap4) em yor divfonte
No Bootstrap 4.1.3:
Isso funcionou para mim quando eu estava tentando centralizar um crachá de inicialização dentro de um
container > row > column
próximo a umh1
título.O que funcionou foi um css simples:
ou
fonte