Como você obtém conteúdo centralizado usando o Twitter Bootstrap?

569

Estou tentando seguir um exemplo muito básico. Usando a página inicial e o sistema de grade , eu esperava o seguinte:

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

... produziria texto centralizado.

No entanto, ele ainda aparece na extrema esquerda. O que estou fazendo errado?

Hoa
fonte
5
você deseja que o texto esteja dentro da '<div class = "span12">' centralizado ou deseja que toda a div '<div class = "row">' seja centralizada na janela do navegador?
NerdFury
Atualize o link para twitter.github.com/bootstrap/scaffolding.html#gridSystem
Amol M Kulkarni
3
Pessoas @Chloe que se preocupam com a compatibilidade HTML. <center>foi preterido em favor do text-align: centerque, aliás, é exatamente o que a classe de autoinicialização .text-centerenvolve.
usar o seguinte comando
Se você estiver usando o Bootstrap 4, consulte: stackoverflow.com/questions/42388989/…
Zim

Respostas:

690

Isto é para a centralização de texto ( que era a questão )

Para outros tipos de conteúdo, consulte a resposta de Flavien .

Atualização: Bootstrap 2.3.0+ Answer

A resposta original era para uma versão inicial do bootstrap. No bootstrap 2.3.0, você pode simplesmente dar a div a classe.text-center .


Resposta original (pré 2.3.0)

Você precisa definir uma das duas classes rowou span12com a text-align: center. Consulte http://jsfiddle.net/xKSUH/ ou http://jsfiddle.net/xKSUH/1/

ScottS
fonte
2
Eu tentei isso para a linha e span12, mas minha tabela dentro da span12, dentro da linha sempre fica à esquerda. A adição de preenchimento move-o para o centro, mas quero centralizá-lo de maneira responsiva. Posso fazer o preenchimento automático de alguma forma?
ATSiem
Vejo que isso está funcionando, mas por que precisamos definir it.Are estes não já definido que eu estou falando apenas sobre o texto ....?
Akshat Jiwan Sharma
@ AkshatJiwanSharma - as classes são definidas, mas, pela última vez que olhei, o text-align: centerpadrão não é o padrão nessas classes. Normalmente, o padrão será o leftalinhamento.
Scotts
para a versão 2.3.0 anterior, .pagination-centeredtambém funciona: P salva o pressionamento de tecla da adição de outra classe.
Sarim 02/04
@ Sarim: Na verdade, pagination-centeredrequer que você adicione outra classe ao html. Minha resposta anterior à 2.3.0 requer apenas uma para expandir a definição de propriedade de uma classe já existente. Além disso, se você olhar para os comentários na resposta pagination-centered, encontrará algumas objeções e avisos relacionados a isso. Mas se funcionar para você no seu caso - vá para ele! :-)
ScottS
240

NOTA: isso foi removido no Bootstrap 3 .


Antes do Bootstrap 3, você poderia usar a classe CSS pagination-centeredassim:

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

A classe pagination-centeredjá está em bootstrap.css (ou bootstrap.min.css) e possui a única regra:

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

Com o Bootstrap 2.3.0. apenas use classetext-center

Iurii.K
fonte
41
Eu não sugeriria usar isso como muito específico para paginação (como inferido no nome da classe). Pode entrar em conflito com os estilos que você aplica na paginação e pode não ser compatível com atualizações futuras se o bootstrap decidir que essa classe precisa fazer mais pela paginação centralizada.
Dayson
4
@ lurii.k Isso torna TUDO centralizado, incluindo crianças. E se quisermos apenas alinhar o contêiner externo, mas deixar tudo dentro dele à esquerda?
gatzkerob
1
Com o bootstrap 2.3.0. basta usar a classe css .text-center
Iurii.K
Maior resposta até agora! Trabalhe com o bootstrap 2.3.2
jQuery00 /
4
Parece que o Bootstrap 3.0.0 removeu esta classe. O uso .text-centerno pai é a solução correta para esta versão.
Blazemonger
152

Eu acho que a maioria das pessoas aqui está realmente procurando uma maneira de centralizar o tododiv e não apenas o conteúdo do texto (o que é trivial ...).

A segunda maneira (em vez de usar text-align: center) para centralizar as coisas no HTML é ter um elemento com largura fixa e margem automática (esquerda e direita). Com o Bootstrap, o estilo que define margens automáticas é a classe "container".

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

Dê uma olhada aqui para um violino: http://jsfiddle.net/D2RLR/7788/

Flavien Volken
fonte
9
Esta é a resposta correta, conforme oficialmente documentado aqui: twitter.github.com/bootstrap/scaffolding.html#layouts
Qlimax
2
@Qlimax Seu link parece estar quebrado, acho que é isso que você queria para 2.3.2: getbootstrap.com/2.3.2/scaffolding.html#layouts
Chris
1
@Sebastialonso Eu apenas fixo a dependência obsoleto, obrigado por relatar o problema
Flavien Volken
Isso não funcionará se você deseja centralizar uma coluna. Para centralizar a coluna da grade, use col-*offset-*. por exemplo <div class="col-10 offset-1">ou<div class="col-8 offset-2">
sgon00 27/02/19
47

Atualização 2019 - Bootstrap 4

"Conteúdo centrado" pode significar muitas coisas diferentes, e a centralização do Bootstrap mudou muito desde a postagem original.

Centro Horizontal

Bootstrap 3

  • text-centeré usado para display:inlineelementos
  • center-blockcentralizar display:blockelementos
  • col-*offset-* centralizar colunas da grade
  • veja esta resposta para centralizar a barra de navegação

Demonstração Bootstrap 3 Centralização Horizontal

Bootstrap 4

  • text-centerainda é usado para display:inlineelementos
  • mx-autosubstitui center-blockpara centralizar display:blockelementos
  • offset-* ou mx-auto pode ser usado para centralizar colunas da grade
  • justify-content-centerno rowtambém pode ser usado para o centrocol-*

mx-auto(margens de auto eixo x) vai centrar display:blockou display:flexos elementos que têm uma largura definida , ( %, vw, px, etc ..). O Flexbox é usado por padrão nas colunas da grade, portanto, também existem vários métodos de centralização do flexbox.

Demonstração Bootstrap 4 Centralização Horizontal


Vertical Center

Agora que o Bootstrap 4 é flexbox por padrão, existem muitas abordagens diferentes para o alinhamento vertical usando: margens automáticas , utilitários flexbox ou os utilitários de exibição junto com os utilitários de alinhamento vertical . A princípio, "utilitários de alinhamento vertical" parece óbvio, mas eles funcionam apenas com elementos de exibição em linha e em tabela. Aqui estão algumas opções de centralização vertical do Bootstrap 4.


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-100aumenta a altura da linha e my-autocentraliza verticalmente a col-sm-12coluna.

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

colunas verticais da grade central

Como o Bootstrap 4 .rowestá agora, display:flexvocê pode simplesmente usar align-self-centerem 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-centerno todo .rowpara alinhar verticalmente todo o alinhamento 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 diferente do centro vertical


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 a demonstração dos utilitários de exibição

Zim
fonte
Ao usar o layout de grade, descobri que apenas a seguinte combinação de css alinharia horizontal e verticalmente uma div dentro de uma coluna, de modo que a altura máxima da coluna também correspondesse à maior coluna na mesma linha. .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; }
precisa saber é o seguinte
Muito obrigado. Isso resolve meu problema.
sgon00
Eu votaria em cada demonstração, se pudesse. Êles são ótimos. :) Muito obrigado!
Pascal
36

O Bootstrap 3.1.1 possui uma .center-blockclasse para centralizar divs. Consulte: http://getbootstrap.com/css/#helper-classes-center .

Centralizar blocos de conteúdo Defina um elemento para display: blocke centralize via margin. Disponível como mixin e classe.

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

Ou, como outros já disseram, use a .text-centerclasse para centralizar o texto.

cornishninja
fonte
29

A melhor maneira de fazer isso é definir um estilo css:

.centered-text {
    text-align:center
}    

Então, sempre que você precisar de texto centralizado, adicione-o da seguinte forma:

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

ou se você quiser apenas a tag p centralizada:

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

Quanto menos CSS embutido você usar, melhor.

tomwolber
fonte
Bom, usei isso para centralizar os botões em um rodapé do Bootstrap Modal.
Giant Elk
13

A classe .show-grid está aplicando o texto alinhado ao centro no exemplo no link.

Você sempre pode adicionar style="text-align:center"à sua linha div ou alguma outra classe que eu pensaria.

PAULDAWG
fonte
4
adicionando estilos inline como este é muitas vezes considerado uma má prática
Spencer Williams
2
Eu concordo, e é por isso que eu também disse "ou alguma outra classe" :)
PAULDAWG
12

Em fevereiro de 2013, em alguns casos, adicionei uma classe "centralizada" à div "span":

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

e para CSS:

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

A razão para isso é que o span * div é flutuado para a esquerda e a técnica de centralização "margem automática" funciona apenas se o div não for flutuado.

Demonstração (no JSFiddle): http://jsfiddle.net/5RpSh/8/embedded/result/

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

bjfletcher
fonte
3
Esta é a melhor resposta porque a div está centralizada e ainda é responsiva. Aqui está um violino para a demo. Aquele em que a resposta não funciona: jsfiddle.net/r7Qgn/6
Rafi
9

Se você usa o Bootstrap 3, ele também possui uma classe CSS interna chamada .text-center . É isso que você quer.

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

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

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

Por favor, veja o exemplo em jsfiddle. http://jsfiddle.net/ucheng/Q4Fue/

Stanley Wang
fonte
8

O Bootstrap 2.3 tem uma 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>
leonbloy
fonte
Não, isso é trabalho apenas para texto, a pergunta é sobre o recipiente principal
drmartin
"A questão é sobre o recipiente principal" Eu não vejo por que você afirma que (e veja a resposta aceita)
leonbloy
5

Do meu lado, defino novos CSSestilos prontos para usar e fáceis de lembrar:

.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;}

É uma boa ideia? Existe alguma boa prática para isso?

Parisiam
fonte
3
declive escorregadio. O CSS deve remover as preocupações de estilo da estrutura do documento. Estes, embora indiretamente, os adicionam de volta. Talvez o TBS span12
Eu concordo com o comentário da pista escorregadia. Eu também acrescentaria que o uso do Twitter Bootstrap em si é indiscutivelmente uma ladeira escorregadia.
21816 Jason Swett
4

Se você estiver usando o Bootstrap 2.0+

Isso pode tornar a div centralizada na página.

<div class="row">
    <div class="span4 offset4">
        //your content here gets centered of the page
    </div>
</div>
Sandeep
fonte
11
isso não centraliza o elemento. coloca o canto superior esquerdo do elemento em 4 colunas à frente. centralizar significa colocar o centro exato do elemento no centro do elemento do contêiner.
Cagatay Kalan
3

Qualquer classe de utilitário de alinhamento de texto faria o truque. O Bootstrap usa a .text-centerclasse para centralizar o texto há muito tempo.

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

Ou você pode criar seus próprios utilitários. Algumas variações que eu vi ao longo dos anos:

.u-text-center { text-align: center !important; }
.ta-center { text-align: center !important; }
.ta\:c { text-align: center !important; }
nathanjessen
fonte
3
Não é um bom design, já que puxar para a esquerda e puxar para a direita afeta o elemento dado à classe. pull-center como você define, afeta os filhos do elemento.
Cagatay Kalan
3

Você precisa ajustar com o .span.

Exemplo:

<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>
Praveen Das - PD
fonte
2

Meu método preferido para centralizar blocos de informações enquanto mantém a capacidade de resposta (compatibilidade móvel) é colocar duas span1divs vazias antes e depois do conteúdo que você deseja centralizar.

<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-->
Kilizo
fonte
2

Para o Bootstrap versão 3.1.1 e superior, a melhor classe para centralizar o conteúdo é a .center-blockclasse auxiliar.

Shwan Namiq
fonte
sim, é certo agora muito temas e usuários usam versões de bootstrap maiores que 3.1.1
SAFEEN 1990 30/09/16
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>

Não use fluido de recipiente na principal.

Talha
fonte
Você tem uma centeredclasse no seu código que criará muita confusão
Bg17aw
abordagem interessante, mas para meu CSS específico da webform, essa foi uma boa opção.
JoshYates1980
1

O bloco central também é uma opção não referida nas respostas acima

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

Tudo o que a classe center-blockfaz é dizer ao elemento que tenha uma margem de 0 automático, sendo as margens esquerda / direita automática. No entanto, a menos que a classe text-center ou css text-align: center; é definido no pai, o elemento não sabe o ponto para calcular esse cálculo automático, portanto, não se centrará como previsto.

Portanto, o centro de texto é uma opção melhor.

Mamba negra
fonte
1

Você pode usar qualquer um dos tipos abaixo

  1. Use a classe existente Bootstrap text-center .
  2. Adicionando um estilo personalizado style = "text-align:center",.
  3. Use um deslocamento de coluna:

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

Poorna Rao
fonte
0

Criei esta classe para manter o centro, independentemente do tamanho da tela, mantendo os recursos responsivos:

.container {
    alignment-adjust: central;
}
Ariel
fonte
0

Basta usar uma classe, no centro de texto, para a div ou tag que você deseja. Eu acho que pode funcionar bem. É uma classe Bootstrap para o centro de alinhamento de texto.

Aqui estão algumas classes de alinhamento de texto do Bootstrap:

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>
shiva krishna
fonte
0

Eu tentei de duas maneiras, e funcionou bem para centralizar o div. Ambas as formas alinham os divs em todas as telas.

Caminho 1: Usando o 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>

Caminho 2: Usando deslocamento:

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

Resultado:

Digite a descrição da imagem aqui

Explicação

O Bootstrap designará, à esquerda, a primeira coluna da ocupação de tela especificada. Se usarmos offset ou push, a coluna 'this' será alterada por 'aquelas' muitas colunas. Embora eu tenha enfrentado alguns problemas em resposta à compensação, o push foi incrível.

Pikesh Prasoon
fonte