Come centrare verticalmente un contenitore in Bootstrap?
Sto cercando un modo per centrare verticalmente il div container
all'interno del jumbotron
e per metterlo al centro della pagina.
Il .jumbotron
deve essere adattato all'intera altezza e larghezza dello schermo. Il div .container
ha una larghezza di 1025px
e dovrebbe essere al centro della pagina (centrato verticalmente).
Voglio che questa pagina abbia il jumbotron adattato all'altezza e alla larghezza dello schermo insieme al contenitore verticalmente al centro del jumbotron. Come posso ottenerlo?
.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>
314
3
Il modo della scatola flessibile
L'allineamento verticale è ora molto semplice grazie all'uso del Flexible box layout. Al giorno d'oggi, questo metodo è supportato in una vasta gamma di browser web eccetto Internet Explorer 8 & 9. Perciò abbiamo bisogno di usare alcuni hack/polyfill o approcci diversi per IE8/9.
Di seguito vi mostrerò come farlo in sole 3 righe di testo (indipendentemente dalla vecchia sintassi flexbox).
Nota: è meglio usare una classe aggiuntiva invece di alterare
.jumbotron
per ottenere l'allineamento verticale. Io userei il nome della classevertical-center
per esempio.[Esempio qui][5] (Un Specchio su jsbin).
Note importanti (considerate nella demo):
Un valore percentuale delle proprietà
height
omin-height
è relativo allaheight
dell'elemento genitore, quindi dovresti specificare esplicitamente laheight
del genitore.Vendor prefixed / vecchia sintassi flexbox omessa nello snippet postato a causa della brevità, ma esistono nell'esempio online.
In alcuni dei vecchi browser web come Firefox 9 (in cui ho testato), il contenitore flex -
.vertical-center
in questo caso - non prenderà lo spazio disponibile all'interno del genitore, quindi abbiamo bisogno di specificare la proprietàwidth
come:larghezza: 100%
.Anche in alcuni browser web, come menzionato sopra, l'elemento flex -
.container
in questo caso - potrebbe non apparire al centro orizzontalmente. Sembra che ilmargine
applicato a sinistra/destra diauto
non abbia alcun effetto sull'elemento flex.Pertanto abbiamo bisogno di allinearlo tramite
box-pack / justify-content
.Per ulteriori dettagli e/o l'allineamento verticale delle colonne, potresti fare riferimento all'argomento qui sotto:
Il modo tradizionale per i browser web legacy
Questa è la vecchia risposta che ho scritto quando ho risposto a questa domanda. Questo metodo è stato discusso qui e dovrebbe funzionare anche in Internet Explorer 8 e 9. Lo spiegherò in breve:
Nel flusso in linea, un elemento di livello in linea può essere allineato verticalmente al centro con la dichiarazione
vertical-align: middle
. Spec da W3C:Nei casi in cui il genitore - l'elemento
.vertical-center
in questo caso - ha un'esplicitaaltezza
, per caso se potessimo avere un elemento figlio che ha esattamente la stessaaltezza
del genitore, saremmo in grado di spostare la linea di base del genitore al punto medio del figlio a tutta altezza e sorprendentemente fare il nostro figlio in-flusso desiderato - il.container
- allineato al centro in verticale.Mettere tutto insieme
Detto questo, potremmo creare un elemento a tutta altezza all'interno del
.vertical-center
tramite pseudo elementi::before
o::after
e cambiare anche il tipo predefinito didisplay
di esso e dell'altro figlio, il.container
ainline-block
.Poi usa
vertical-align: middle;
per allineare verticalmente gli elementi in linea.Ecco qui:
DEMO DI LAVORO.
Inoltre, per prevenire problemi imprevisti in schermi molto piccoli, puoi reimpostare l'altezza dello pseudo-elemento su
auto
o0
o cambiare il suo tipo didisplay
anone
se necessario:DEMO AGGIORNATO
E un'altra cosa:
Se ci sono sezioni
footer
/header
intorno al contenitore, è meglio posizionare quegli elementi correttamente (relativo
,assoluto
? dipende da te.) e aggiungere un valore diz-index
più alto (per sicurezza) per tenerli sempre in cima agli altri.aggiungi Bootstrap.css poi aggiungi questo al tuo css
Questo è il Css
Ora chiama nella tua pagina
La mia tecnica preferita:
Demo
Vedi anche [questo Fiddle][1]!