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?


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


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/


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


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/


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


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.


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.


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.


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/


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/


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>

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?


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
— dê

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>

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

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>

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

2

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


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.


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.


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>


0

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

.container {
    alignment-adjust: central;
}

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>

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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.