Existem duas abordagens para centralizar uma coluna <div>
no Bootstrap 3:
Abordagem 1 (compensações):
A primeira abordagem usa as próprias classes de deslocamento do Bootstrap, portanto, não requer alterações na marcação e nenhum CSS extra. A chave é definir um deslocamento igual à metade do tamanho restante da linha . Por exemplo, uma coluna de tamanho 2 seria centralizada adicionando um deslocamento de 5, é isso (12-2)/2
.
Na marcação, seria assim:
<div class="row">
<div class="col-md-2 col-md-offset-5"></div>
</div>
Agora, há uma desvantagem óbvia para esse método. Ele só funciona para os tamanhos das colunas mesmo , tão somente .col-X-2
, .col-X-4
, col-X-6
, col-X-8
, e col-X-10
são suportados.
Se aproxime 2 (o velho margin:auto
)
Você pode centralizar qualquer tamanho de coluna usando a margin: 0 auto;
técnica comprovada . Você só precisa cuidar da flutuação adicionada pelo sistema de grade do Bootstrap. Eu recomendo definir uma classe CSS personalizada como a seguinte:
.col-centered{
float: none;
margin: 0 auto;
}
Agora você pode adicioná-lo a qualquer tamanho de coluna em qualquer tamanho de tela e funcionará perfeitamente com o layout responsivo do Bootstrap:
<div class="row">
<div class="col-lg-1 col-centered"></div>
</div>
Nota: Com ambas as técnicas, você pode pular o .row
elemento e ter a coluna centralizada em a .container
, mas você observaria uma diferença mínima no tamanho real da coluna devido ao preenchimento na classe de contêiner.
Atualizar:
Como o v3.0.1 Bootstrap possui uma classe interna chamada center-block
que usa margin: 0 auto
, mas está ausente float:none
, você pode adicioná-lo ao seu CSS para fazê-lo funcionar com o sistema de grade.
.clearfix
não iria funcionar neste caso, porque ele não remover a propriedade flutuação sobre os elementos (que é necessário para o centro usandomargin: 0 auto
), ele só faz um recipiente envolver quaisquer elementos flutuavam dentrofloat:none;
O método preferido de centragem colunas é a utilização de "offsets" (ou seja:
col-md-offset-3
)Exemplos de centralização do Bootstrap 3.x
Para elementos de centralização , há uma
center-block
classe auxiliar .Você também pode usar
text-center
para centralizar o texto (e elementos embutidos).Demo : http://bootply.com/91632
EDIT - Conforme mencionado nos comentários,
center-block
funciona no conteúdo e nosdisplay:block
elementos dacoluna, mas não funciona na própria coluna (col-*
divs) porque o Bootstrap usafloat
.Atualização 2018
Agora, com o Bootstrap 4 , os métodos de centralização foram alterados.
text-center
ainda é usado paradisplay:inline
elementosmx-auto
substituicenter-block
para centralizardisplay:block
elementosoffset-*
oumx-auto
pode ser usado para centralizar colunas da grademx-auto
(margens de auto eixo x) vai centrardisplay:block
oudisplay:flex
os 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
Para centralização vertical no BS4, consulte https://stackoverflow.com/a/41464397/171456
fonte
text-center
detalhes - que nenhuma das outras respostas forneceu. Este recebe meu voto.float:none;
Agora o Bootstrap 3.1.1 está trabalhando
.center-block
e essa classe auxiliar funciona com o sistema de colunas.Bootstrap 3 Helper Class Center .
Por favor, verifique esta DEMO jsfiddle :
Linha centro da coluna usando a
col-center-block
classe auxiliar.fonte
float:none
, certificando-me de que o bloco central div tenha ostyle="width : ?px"
estilo aplicado a ele. Por exemplo, uma largura de imagem. Funciona com 3.2.2Basta adicionar o seguinte ao seu arquivo CSS personalizado. A edição direta de arquivos CSS do Bootstrap não é recomendada e cancela a capacidade de usar uma CDN .
Por quê?
O CSS do Bootstrap (versão 3.7 e inferior) usa a margem: 0 auto; , mas é substituído pela propriedade float do contêiner de tamanho.
PS :
Depois de adicionar esta classe, não se esqueça de definir as classes na ordem certa.
fonte
3.3.7
e este é o único método que funciona para mim!!important
é necessárioO Bootstrap 3 agora tem uma classe interna para esse
.center-block
Se você ainda estiver usando o 2.X, basta adicionar isso ao seu CSS.
fonte
float:none;
Minha abordagem para as colunas centrais é usar
display: inline-block
para colunas etext-align: center
para o pai do contêiner.Você apenas precisa adicionar a classe CSS 'centralizada' ao arquivo
row
.HTML:
CSS:
JSFiddle: http://jsfiddle.net/steyffi/ug4fzcjd/
fonte
O Bootstrap versão 3 possui uma classe .text-center.
Basta adicionar esta classe:
Simplesmente carregará este estilo:
Exemplo:
fonte
Com o Bootstrap v4, isso pode ser feito apenas adicionando
.justify-content-center
ao.row
<div>
https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content
fonte
Isso funciona. Uma maneira hackish provavelmente, mas funciona bem. Foi testado para resposta (Y).
fonte
img
pode ser definido como um bloco..centered img { display: inline; }
sua resposta e, então, seria digno de um voto positivo.fonte
Para centralizar a coluna, precisamos usar o código abaixo. colunas são elementos flutuantes além da margem automática. Também vamos configurá-lo para flutuar nenhum,
Para centralizar o col-lg-1 acima com a classe centrado, escreveremos:
Para centralizar o conteúdo dentro da div, use
text-align:center
,Se você deseja centralizá-lo apenas na área de trabalho e na tela maior, não no celular, use a seguinte consulta de mídia.
E para centralizar o div apenas na versão móvel, use o código abaixo.
fonte
Basta definir sua coluna que exibe o conteúdo como col-xs-12 (mobile-first ;-) e configurar o contêiner apenas para controlar a largura que você deseja que seu conteúdo centralizado tenha, portanto:
Para uma demonstração, consulte http://codepen.io/Kebten/pen/gpRNMe :-)
fonte
Outra abordagem da compensação é ter duas linhas vazias, por exemplo:
fonte
Você pode usar
text-center
a linha e garantir que as divs internas tenhamdisplay:inline-block
(com nãofloat
).Como:
E CSS:
O violino: http://jsfiddle.net/DTcHh/3177/
fonte
Com o bootstrap 4, você pode simplesmente tentar,
justify-content-md-center
como mencionado aquifonte
Essa provavelmente não é a melhor resposta, mas há mais uma solução criativa para isso. Conforme apontado por koala_dev, o deslocamento da coluna funciona apenas para tamanhos uniformes de colunas. No entanto, ao aninhar linhas, você também pode centralizar colunas desiguais.
Para manter a pergunta original, na qual você deseja centralizar uma coluna 1 dentro de uma grade 12.
Por exemplo:
Veja este violino , observe que você precisa aumentar o tamanho da janela de saída para também ver o resultado, caso contrário as colunas serão quebradas.
fonte
Este não é o meu código, mas funciona perfeitamente (testado no Bootstrap 3) e não preciso mexer com o offset de col.
Demo:
fonte
Podemos conseguir isso usando o mecanismo de layout da tabela:
O mecanismo é:
A demonstração de amostra está aqui
fonte
Anexe o seguinte trecho dentro de seu arquivo .row ou seu .col. Isso é para o Bootstrap 4 *.
fonte
Como o koala_dev usou em sua abordagem 1, eu preferiria o método de deslocamento em vez do bloco central ou margens que têm uso limitado, mas como ele mencionou:
Isso pode ser resolvido usando a seguinte abordagem para colunas ímpares.
fonte
Você pode usar a solução muito flexível flexbox no seu Bootstrap.
pode centralizar sua coluna.
Confira o flex .
fonte
Como nunca tenho a necessidade de centralizar apenas uma
.col-
dentro de uma.row
, defino a seguinte classe no agrupamento.row
de minhas colunas de destino.Exemplo
fonte
Para aqueles que desejam centralizar os elementos da coluna na tela quando você não tem o número exato para preencher sua grade, escrevi um pequeno pedaço de JavaScript para retornar os nomes das classes:
Se você possui 5 elementos e deseja 3 por linha em uma
md
tela, faça o seguinte:Lembre-se de que o segundo argumento deve ser dividido por 12.
fonte
Para centralizar mais de uma coluna em uma linha do Bootstrap - e o número de
css
colunas é ímpar, basta adicionar esta classe a todas as colunas nessa linha:Então, no seu HTML, você tem algo como:
fonte
Tente isto
Você pode usar outros
col
, bem comocol-md-2
, etc.fonte
Sugiro simplesmente usar a classe
text-center
:fonte
Experimente este código.
Aqui eu usei col-lg-1, e o deslocamento deve ser 10 para centralizar adequadamente a div em dispositivos grandes. Se você precisar centralizar em dispositivos de médio a grande porte, altere lg para md e assim por diante.
fonte
Solução Bootstrap 4 :
fonte
Se você colocar isso em sua linha, todas as colunas internas serão centralizadas:
fonte
Para ser mais preciso, o sistema de grade do Bootstrap contém 12 colunas e para centralizar qualquer conteúdo, digamos, por exemplo, que o conteúdo ocupa uma coluna. É necessário ocupar duas colunas da grade do Bootstrap e colocar o conteúdo na metade das duas colunas ocupadas.
'col-xs-offset-5' está dizendo ao sistema de grade por onde começar a colocar o conteúdo.
'col-xs-2' está dizendo ao sistema de grade quantas colunas restantes sobra o conteúdo deve ocupar.
'centrado' será uma classe definida que centralizará o conteúdo.
Aqui está como este exemplo se parece no sistema de grade do Bootstrap.
Colunas:
1 | 2 3 4 5 6 7 8 9 10 11 12
....... deslocamento ....... dados. .......não usado........
fonte