Estou procurando uma maneira de centralizar verticalmente a container
div dentro da jumbotron
e configurá-la no meio da página.
Ele .jumbotron
deve ser adaptado à altura e largura totais da tela. A .container
div tem uma largura de 1025px
e deve estar no meio da página (verticalmente no centro).
Desejo que esta página tenha o jumbotron adaptado à altura e largura da tela, juntamente com o contêiner verticalmente centralizado no jumbotron. Como posso conseguir isso?
.jumbotron {
height:100%;
width:100%;
}
.container {
width:1025px;
}
.jumbotron .container {
max-width: 100%;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="jumbotron">
<div class="container text-center">
<h1>The easiest and powerful way</h1>
<div class="row">
<div class="col-md-7">
<div class="top-bg"></div>
</div>
<div class="col-md-5 iPhone-features" style="margin-left:-25px;">
<ul class="top-features">
<li>
<span><i class="fa fa-random simple_bg top-features-bg"></i></span>
<p><strong>Redirect</strong><br>Visitors where they converts more.</p>
</li>
<li>
<span><i class="fa fa-cogs simple_bg top-features-bg"></i></span>
<p><strong>Track</strong><br>Views, Clicks and Conversions.</p>
</li>
<li>
<span><i class="fa fa-check simple_bg top-features-bg"></i></span>
<p><strong>Check</strong><br>Constantly the status of your links.</p>
</li>
<li>
<span><i class="fa fa-users simple_bg top-features-bg"></i></span>
<p><strong>Collaborate</strong><br>With Customers, Partners and Co-Workers.</p>
</li>
<a href="pricing-and-signup.html" class="btn-primary btn h2 lightBlue get-Started-btn">GET STARTED</a>
<h6 class="get-Started-sub-btn">FREE VERSION AVAILABLE!</h6>
</ul>
</div>
</div>
</div>
</div>
html
css
twitter-bootstrap
twitter-bootstrap-3
vertical-alignment
user1012181
fonte
fonte
Respostas:
A maneira da caixa flexível
O alinhamento vertical agora é muito simples pelo uso do layout da caixa flexível . Atualmente, esse método é suportado em uma ampla variedade de navegadores da web, exceto o Internet Explorer 8 e 9. Portanto, precisamos usar alguns hacks / polyfills ou abordagens diferentes para o IE8 / 9.
A seguir, mostrarei como fazer isso em apenas 3 linhas de texto (independentemente da sintaxe antiga do flexbox) .
Nota: é melhor usar uma classe adicional em vez de alterar
.jumbotron
para obter o alinhamento vertical. Eu usaria overtical-center
nome da classe, por exemplo.Exemplo Aqui (Um Espelho no jsbin) .
Notas importantes (consideradas na demonstração) :
Uma porcentagem de valores
height
oumin-height
propriedades é relativa aoheight
elemento pai, portanto, você deve especificarheight
explicitamente o elemento pai.A sintaxe flexbox antiga / com prefixo do fornecedor foi omitida no snippet publicado devido à brevidade, mas existe no exemplo online.
Em alguns navegadores antigos como o Firefox 9 (em que eu testei) , o recipiente Flex -
.vertical-center
neste caso - não terá o espaço disponível no interior do pais, portanto, precisamos especificar owidth
imóvel como:width: 100%
.Também em alguns navegadores da web, como mencionado acima, o item flex -
.container
nesse caso - pode não aparecer no centro horizontalmente. Parece que a aplicada a esquerda / direitamargin
deauto
não ter qualquer efeito sobre o item flex.Portanto, precisamos alinhá-lo
box-pack / justify-content
.Para mais detalhes e / ou alinhamento vertical das colunas, você pode consultar o tópico abaixo:
A maneira tradicional para navegadores da web herdados
Esta é a resposta antiga que escrevi no momento em que respondi a essa pergunta. Este método foi discutido aqui e deve funcionar no Internet Explorer 8 e 9 também. Vou explicar em resumo:
No fluxo embutido, um elemento de nível embutido pode ser alinhado verticalmente ao meio por
vertical-align: middle
declaração. Especificações do W3C :Nos casos em que o pai -
.vertical-center
elemento neste caso - tenha um explícitoheight
, por acaso, se pudéssemos ter um elemento filho exatamente igualheight
ao pai, poderíamos mover a linha de base do pai para o ponto médio do - filho de altura e surpreendentemente faça nossa criança de fluxo desejada - a.container
- alinhada verticalmente ao centro.Reunindo todos
Dito isto, podemos criar um elemento de altura total dentro dos elementos
.vertical-center
by::before
ou::after
pseudo-elementos e também alterar odisplay
tipo padrão dele e o outro filho, o.container
toinline-block
.Em seguida, use
vertical-align: middle;
para alinhar os elementos embutidos verticalmente.Aqui está:
DEMO DE TRABALHO .
Além disso, para evitar problemas inesperados em telas pequenas extras, você pode redefinir a altura do pseudoelemento para
auto
ou0
ou alterar seudisplay
tipo para,none
se necessário, para:DEMO ATUALIZADO
E mais uma coisa:
Se houver
footer
/header
seções ao redor do contêiner, é melhor posicionar esses elementos adequadamente (relative
,absolute
? Até você.) E adicionar umz-index
valor mais alto (para garantir) para mantê-los sempre em cima dos outros.fonte
display: flex
a.container
, isso faz com que a criança.row
desapareça. Parece que o modo flexbox exigiria, portanto, que deixássemos de usar alguns dos principais recursos de autoinicialização?Atualização 2019
O Bootstrap 4 inclui flexbox, portanto o método de centralização vertical é muito mais fácil e não requer CSS extra .
Basta usar as classes utilidade
d-flex
ealign-items-center
..http://www.codeply.com/go/ui6ABmMTLv
Importante: A centralização vertical é relativa à altura . O contêiner pai dos itens que você está tentando centralizar deve ter uma altura definida . Se você deseja que a altura da página use
vh-100
oumin-vh-100
no pai! Por exemplo:Veja também: Alinhamento vertical centralizado no Bootstrap 4
fonte
adicione Bootstrap.css e adicione-o ao seu css
fonte
No Bootstrap 4 :
para centralizar o filho horizontalmente , use a classe bootstrap-4:
para centralizar o filho verticalmente , use a classe bootstrap-4:
mas lembre-se de não se esqueça de usar a classe d-flex com estes, é uma classe de utilitário bootstrap-4, assim
Nota: certifique-se de adicionar os utilitários bootstrap-4 se este código não funcionar
Eu sei que não é a resposta direta a esta pergunta, mas pode ajudar alguém
fonte
Minha técnica preferida:
Demo
Veja também este violino !
fonte
Testado no IE, Firefox e Chrome.
Encontrado em https://css-tricks.com/centering-css-complete-guide/
fonte
para o centro vertical bootstrap4 de poucos itens
d-flex para regras flex
coluna flexível para direção vertical nos itens
justificar-centro de conteúdo para centralizar
style = 'height: 300px;' deve ter pontos de ajuste onde o centro deve ser calculado ou usar a classe h-100
então, para o centro horizontal div d-flex justifique-centro do conteúdo e algum contêiner
então temos hierarquias de 3 tags: div-column -> div-row -> div-container
fonte
Se você estiver usando o Bootstrap 4, basta adicionar 2 divs:
As classes: d-table, d-table-cell, w-100, h-100 e align-middle farão o trabalho
fonte
Dê à classe Container
Dê a div que está dentro do contêiner:
Todo o conteúdo desta div será exibido no meio da página.
fonte
Aqui está a maneira que eu estou usando para alinhar verticalmente o conteúdo - superior / central / inferior com 3 linhas de inicialização. Bootstrap 3 colunas com a mesma altura e alinhadas verticalmente.
Aqui está uma demonstração do JSFiddle .
fonte