Come si ottengono contenuti centrati utilizzando Twitter Bootstrap?


569

Sto cercando di seguire un esempio molto semplice. Utilizzando la pagina iniziale e il sistema a griglia , speravo che:

<div class="row">
  <div class="span12">
    <h1>Bootstrap starter template</h1>
    <p>Example text.</p>
  </div>
</div>

... produrrebbe un testo centrato.

Tuttavia, appare ancora all'estrema sinistra. Che cosa sto facendo di sbagliato?


5
vuoi che il testo all'interno del '<div class = "span12">' sia centrato o vuoi che l'intero div '<div class = "row">' sia centrato nella finestra del browser?
NerdFury


3
@Chloe persone che si preoccupano della compatibilità HTML. <center>è deprecato a favore del text-align: centerquale, per inciso, è esattamente ciò che .text-centeravvolge la classe bootstrap .
jmoss,

Se stai usando Bootstrap 4, vedi: stackoverflow.com/questions/42388989/…
Zim

Risposte:


690

Questo è per il centraggio del testo ( che è la domanda )

Per altri tipi di contenuti, vedere la risposta di Flavien .

Aggiornamento: Bootstrap 2.3.0+ Risposta

La risposta originale era per una versione iniziale di bootstrap. A partire da bootstrap 2.3.0, puoi semplicemente dare al div la classe.text-center .


Risposta originale (pre 2.3.0)

È necessario definire una delle due classi rowo span12con a text-align: center. Vedi http://jsfiddle.net/xKSUH/ o http://jsfiddle.net/xKSUH/1/


2
Ho provato questo per entrambe le righe e span12, ma il mio tavolo all'interno di span12, all'interno della riga si trova sempre a sinistra. L'aggiunta del padding lo sposta al centro, ma voglio centrarlo in modo reattivo. Posso fare il padding automatico in qualche modo?
ATSiem,

Vedo che funziona, ma perché dovremmo aver bisogno di definirlo. Questi non sono già definiti? Sto parlando solo del testo ....
Akshat Jiwan Sharma

@ AkshatJiwanSharma: le classi sono definite, ma per ultimo ho guardato, text-align: centernon è l'impostazione predefinita per quelle classi. In genere il valore predefinito sarà l' leftallineamento.
ScottS,

per pre 2.3.0 .pagination-centeredfunziona anche: P ti salva la sequenza di tasti per aggiungere un'altra classe.
Sarim,

@Sarim: In realtà, è pagination-centerednecessario aggiungere un'altra classe all'html . La mia risposta pre-2.3.0 richiede solo una per espandere la definizione di proprietà di una classe già presente. Inoltre, se guardi i commenti sulla risposta usando pagination-centered, troverai alcune obiezioni e avvertenze relative a ciò. Ma se funziona nel tuo caso, vai su di esso! :-)
ScottS

240

NOTA: questo è stato rimosso in Bootstrap 3 .


Pre-Bootstrap 3, è possibile utilizzare la classe CSS in pagination-centeredquesto modo:

<div class="span12 pagination-centered">
    Centered content.
</div>

La classe pagination-centeredè già in bootstrap.css (o bootstrap.min.css) e ha l'unica regola:

.pagination-centered{text-align:center;}

Con Bootstrap 2.3.0. basta usare la classetext-center


41
Non consiglierei di usarlo come molto specifico per l'impaginazione (come dedotto dal nome della classe). Potrebbe scontrarsi con gli stili applicati alla paginazione e potrebbe non essere compatibile con gli aggiornamenti futuri se bootstrap decide che questa classe deve fare di più per l'impaginazione centrata.
Dayson,

4
@ lurii.k Questo rende TUTTO centrato, compresi i bambini. Cosa succede se vogliamo solo allineare il contenitore esterno ma avere tutto al suo interno allineato a sinistra?
Gatzkerob,

1
Con bootstrap 2.3.0. basta usare la classe css .text-center
Iurii.K il

La risposta più grande finora! Lavora con bootstrap 2.3.2
jQuery00

4
Sembra che Bootstrap 3.0.0 abbia rimosso questa classe. L'utilizzo .text-centersul genitore è la soluzione corretta per questa versione.
Blazemonger,

152

Immagino che la maggior parte delle persone qui stia effettivamente cercando il modo di centrare il tuttodiv e non solo il contenuto del testo (che è banale ...).

Il secondo modo (invece di usare text-align: center) per centrare le cose in HTML è avere un elemento con una larghezza fissa e un margine automatico (sinistro e destro). Con Bootstrap, lo stile che definisce i margini automatici è la classe "container".

<div class="container">
    <div class="span12">
        "Centered stuff there"
    </div>
</div>

Dai un'occhiata qui per un violino: http://jsfiddle.net/D2RLR/7788/


9
Questa è la risposta corretta, come documentato ufficialmente qui: twitter.github.com/bootstrap/scaffolding.html#layouts
Qlimax

2
@Qlimax Il tuo link sembra essere rotto, penso che questo sia quello che volevi per 2.3.2: getbootstrap.com/2.3.2/scaffolding.html#layouts
Chris

1
@Sebastialonso Ho appena risolto la dipendenza deprecata, grazie per aver segnalato il problema
Flavien Volken,

Questo non funzionerà se si desidera centrare una colonna. Per centrare la colonna della griglia, utilizzare col-*offset-*. per esempio <div class="col-10 offset-1">oppure<div class="col-8 offset-2">
sgon00,

47

Aggiornamento 2019 - Bootstrap 4

"Contenuto centrato" può significare molte cose diverse e il centraggio di Bootstrap è cambiato molto dal post originale.

Centro orizzontale

Bootstrap 3

  • text-centerè usato per gli display:inlineelementi
  • center-blockcentrare gli display:blockelementi
  • col-*offset-* centrare le colonne della griglia
  • vedere questa risposta per centrare la barra di navigazione

Demo Bootstrap 3: centraggio orizzontale

Bootstrap 4

  • text-centerè ancora usato per gli display:inlineelementi
  • mx-autosostituisce gli elementi center-blockcentralidisplay:block
  • offset-* o mx-auto può essere utilizzato per centrare le colonne della griglia
  • justify-content-centerin rowpuò anche essere usato per centrarecol-*

mx-auto(margini auto asse x) si concentreranno display:blocko display:flexelementi che hanno una larghezza definita , ( %, vw, px, ecc ..). Flexbox viene utilizzato per impostazione predefinita nelle colonne della griglia, quindi esistono anche vari metodi di centraggio del flexbox.

Demo Bootstrap 4 Centratura orizzontale


Centro verticale

Ora che Bootstrap 4 è flexbox per impostazione predefinita, ci sono molti approcci diversi all'allineamento verticale usando: margini automatici , programmi di utilità flexbox o programmi di visualizzazione insieme a programmi di allineamento verticale . Inizialmente "utils di allineamento verticale" sembra ovvio, ma funzionano solo con elementi di visualizzazione inline e table. Ecco alcune opzioni di centraggio verticale Bootstrap 4.


1 - Centro verticale usando i margini automatici:

Un altro modo per centrare verticalmente è usare my-auto. Questo centrerà l'elemento all'interno del suo contenitore. Ad esempio, h-100rende la riga a tutta altezza e my-autocentrerà verticalmente la col-sm-12colonna.

<div class="row h-100">
    <div class="col-sm-12 my-auto">
        <div class="card card-block w-25">Card</div>
    </div>
</div>

Centro verticale usando la demo dei margini automatici

my-auto rappresenta i margini sull'asse y verticale ed equivale a:

margin-top: auto;
margin-bottom: auto;

2 - Centro verticale con Flexbox:

colonne della griglia centrale verticale

Poiché Bootstrap 4 .rowè ora display:flexpuoi semplicemente usare align-self-centersu qualsiasi colonna per centrarlo 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>

oppure, usa align-items-centertutto .rowper allineare verticalmente al centro tutto col-*nella riga ...

       <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>

Demo delle colonne di altezza diversa al centro verticale


3 - Centro verticale utilizzando gli strumenti di visualizzazione:

Bootstrap 4 ha utils visualizzazione che possono essere utilizzati per display:table, display:table-cell, display:inline, ecc .. Questi possono essere usati con i utils di allineamento verticale alla linea di allineamento, linea-blocco o elementi di cella di tabella.

<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 verticale con Demo Utilità display


Quando ho usato il layout Grid ho scoperto che solo la seguente combinazione di CSS avrebbe allineato orizzontalmente e verticalmente un div all'interno di una colonna in modo che l'altezza massima della colonna corrispondesse anche alla colonna più grande della stessa riga. .className-of-inner-div { display: inline-block; text-align: left; padding-top: 25%; padding-bottom: 20%; margin-top: auto; margin-bottom: auto; } .className-of-Grid-column { vertical-align:middle; text-align: center; }
user3188040

Molte grazie. Questo risolve il mio problema.
sgon00,

Vorrei votare per ogni demo se potessi. Sono grandi. :) Molte grazie!
Pascal,

36

Bootstrap 3.1.1 ha una .center-blockclasse per centrare div. Vedi: http://getbootstrap.com/css/#helper-classes-center .

Centra i blocchi di contenuto Imposta un elemento su display: blocke centra via margin. Disponibile come mixin e classe.

<div class="center-block">...</div>

Oppure, come altri hanno già detto, usa la .text-centerclasse per centrare il testo.


29

Il modo migliore per farlo è definire uno stile css:

.centered-text {
    text-align:center
}    

Quindi, ovunque tu abbia bisogno di testo centrato, lo aggiungi in questo modo:

<div class="row">
    <div class="span12 centered-text">
        <h1>Bootstrap starter template</h1>
        <p>Use this document as a way to quick start any new project.<br> All you get is this message and a barebones HTML document.</p>
    </div>
</div>

o se vuoi solo centrare il tag p:

<div class="row">
    <div class="span12 centered-text">
        <h1>Bootstrap starter template</h1>
        <p class="centered-text">Use this document as a way to quick start any new project.<br> All you get is this message and a barebones HTML document.</p>
    </div>
</div>

Meno css inline usi meglio è.


Bene, l'ho usato per centrare i pulsanti in un piè di pagina Modale Bootstrap.
Giant Elk,

13

La classe .show-grid applica il testo allineato al centro nell'esempio nel collegamento.

Puoi sempre aggiungere style="text-align:center"alla tua riga div o qualche altra classe che penso.


4
l'aggiunta di stili in linea come questo è spesso considerata una cattiva pratica
Spencer Williams il

2
Sono d'accordo, ed è per questo che ho anche detto "o qualche altra lezione" :)
PAULDAWG,

12

A partire da febbraio 2013, in alcuni casi, aggiungo una classe "centrata" al div "span":

<div class="container">
  <div class="row">
    <div class="span9 centred">
      This div will be centred.
    </div>
  </div>
</div>

e ai CSS:

[class*="span"].centred {
  margin-left: auto;
  margin-right: auto;
  float: none;
}

Il motivo è dovuto al fatto che i div * span vengono spostati a sinistra e la tecnica di centraggio "auto margin" funziona solo se il div non viene float.

Demo (su JSFiddle): http://jsfiddle.net/5RpSh/8/embedded/result/

JSFiddle: http://jsfiddle.net/5RpSh/8/


3
Questa è la risposta migliore perché il div è centrato ed è ancora reattivo. Ecco un violino per la demo. Quello nella risposta non funziona: jsfiddle.net/r7Qgn/6
Rafi

9

Se usi Bootstrap 3, ha anche una classe CSS integrata denominata .text-center . Questo è ciò che vuoi.

<div class="text-left">
    left
</div>

<div class="text-center">
    center
</div>

<div class="text-right">
    right
</div>

Vedi l'esempio in jsfiddle. http://jsfiddle.net/ucheng/Q4Fue/


8

Bootstrap 2.3 ha una text-centerclasse.

<p class="text-left">Left aligned text.</p>
<p class="text-center">Center aligned text.</p>
<p class="text-right">Right aligned text.</p>

No, funziona solo per il testo, la domanda riguarda il contenitore principale
drmartin,

"la domanda riguarda il contenitore principale" Non vedo perché lo affermi (e vedi la risposta accettata)
leonbloy

5

Da parte mia definisco nuovi CSSstili pronti all'uso e facili da ricordare:

.center { text-align: center;}
.left { text-align: left;}
.right { text-align: right;}
.justify { text-align: justify;}
.fleft { float: left;} /*-> similar to .pull-left already existing in bootstrap*/
.fright { float: right;}  /*-> similar to .pull-right already existing in bootstrap*/
.vab { vertical-align: bottom;}
.bold { font-weight: bold;}
.italic { font-style: italic;}

È una buona idea? C'è qualche buona pratica per questo?


3
pendio scivoloso. css dovrebbe rimuovere i problemi di stile dalla struttura del documento. Questi, sebbene indirettamente, li aggiungono di nuovo. Forse TBS span12

Concordo con il commento sulla pendenza scivolosa. Aggiungo anche che l'uso dello stesso Bootstrap di Twitter è probabilmente una pendenza scivolosa.
Jason Swett,

4

Se si utilizza Bootstrap 2.0+

Questo può rendere il div centrato sulla pagina.

<div class="row">
    <div class="span4 offset4">
        //your content here gets centered of the page
    </div>
</div>

11
questo non centra l'elemento. porta in avanti l'angolo superiore sinistro dell'elemento a 4 colonne. centrare significa mettere il centro esatto dell'elemento al centro dell'elemento contenitore.
Cagatay Kalan,

3

Qualsiasi classe di utilità di allineamento del testo farebbe il trucco. Bootstrap utilizza la .text-centerclasse per centrare il testo da molto tempo ormai.

.text-center { text-align: center !important; }

Oppure puoi creare le tue utilità. Alcune variazioni che ho visto negli anni:

.u-text-center { text-align: center !important; }
.ta-center { text-align: center !important; }
.ta\:c { text-align: center !important; }

3
Non è un buon design poiché pull-left e pull-right influiscono sull'elemento dato alla classe. pull-center come da te definito, influisce sui figli dell'elemento.
Cagatay Kalan,

3

È necessario regolare con .span.

Esempio:

<div class="container-fluid">
  <div class="row-fluid">
    <div class="span4"></div>
    <!--/span-->
    <div class="span4" align="center">
      <div class="hero-unit" align="center">
        <h3>Sign In</h3>
        <form>
          <div class="input-prepend">
            <span class="add-on"><i class="icon-envelope"></i> </span>
            <input class="span6" type="text" placeholder="Email address">
          </div>
          <div class="input-prepend">
            <span class="add-on"><i class="icon-key"></i> </span>
            <input class="span6" type="password" placeholder="Password">
          </div>
        </form>
      </div>
    </div>
    <!-- /span -->
    <div class="span4"></div>
  </div>
  <!-- /row -->
</div>

2

Il mio metodo preferito per centrare blocchi di informazioni mantenendo la reattività (compatibilità mobile) consiste nel posizionare due span1div vuoti prima e dopo il contenuto che si desidera centrare.

<div class="row-fluid">

    <div class="span1">
    </div>

        <div class="span10">
          <div class="hero-unit">
            <h1>Reading Resources</h1>
            <p>Read here...</p>
          </div>
        </div><!--/span-->

    <div class="span1">
    </div>

</div><!--/row-->

2

Per Bootstrap versione 3.1.1 e successive, la classe migliore per centrare il contenuto è la .center-blockclasse helper.


Sì, ora è Wright molto temi e gli utenti usano versioni bootstrap successive alla 3.1.1
SAFEEN 1990,

1
<div class="container">
  <div class="col-md-12 centered">
    <div class="row">
      <div class="col-md-1"></div>
       <div class="col-md-10">
           label
       </div>
      <div class="col-md-1"></div>
    </div>
  </div>
</div>

Non utilizzare il contenitore-fluido nell'unità principale.


Hai una centeredclasse nel tuo codice che creerà molta confusione
bg17aw,

approccio interessante, ma per il mio particolare modulo web CSS, questa è stata una buona opzione.
JoshYates1980,

1

Il blocco centrale è anche un'opzione non indicata nelle risposte sopra

    <div class="center-block" style="width:200px;background-color:#ccc;">...</div>

Tutto quello che center-blockfa la classe è dire all'elemento di avere un margine di 0 auto, l'auto è il margine sinistro / destro. Tuttavia, a meno che la classe text-center o css text-align: center; è impostato sul genitore, l'elemento non conosce il punto da cui calcolare questo calcolo automatico, quindi non si centrerà come previsto.

Quindi il text-center è un'opzione migliore.


1

Puoi usare uno dei seguenti tipi

  1. Utilizzare la classe esistente Bootstrap text-center.
  2. L'aggiunta di uno stile personalizzato, style = "text-align:center".
  3. Usa un offset di colonna:

    Esempio: <div class="col-md-offset-6 col-md-12"></div>


0

Ho creato questa classe per mantenere il centrato indipendentemente dalle dimensioni dello schermo mantenendo le funzionalità reattive:

.container {
    alignment-adjust: central;
}

0

Usa semplicemente una classe, un centro di testo, per il div o tag che desideri. Penso che potrebbe funzionare bene. È una classe Bootstrap per il centro di allineamento del testo.

Ecco alcune classi di Bootstrap per l'allineamento del testo:

text-left, text-right, text-justify, etc.
<div class="row">
 <div class="col-md-12 text-center">
  <h1>Bootstrap starter template</h1>
  <p>Example text.</p>
 </div>
</div>

0

Ho provato in due modi, e ha funzionato benissimo per centrare il div. Entrambi i modi allineeranno i div su tutte le schermate.

Modo 1: Utilizzo di Push:

<div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4 col-lg-push-4 col-md-push-4 col-sm-push-4 col-xs-push-4" style="border-style:solid;border-width:1px">
    <h2>Grievance form</h2> <!-- To center this text, use style="text-align: center" -->
  </div>

Modo 2: utilizzo dell'offset:

<div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4 col-lg-offset-4 col-md-offest-4 col-sm-offest-4 col-xs-offest-4" style="border-style:solid;border-width:1px">
    <h2>Grievance form</h2> <!--to center this text, use style="text-align: center"-->
</div>

Risultato:

Inserisci qui la descrizione dell'immagine

Spiegazione

Bootstrap designerà a sinistra, la prima colonna dell'occupazione dello schermo specificata. Se utilizziamo offset o push, la colonna "this" verrà spostata di "quelle" di molte colonne. Anche se ho affrontato alcuni problemi nella reattività dell'offset, la spinta è stata fantastica.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.