Como alinhar um ponto morto da imagem com o bootstrap

207

Estou usando a estrutura de inicialização e tentando obter uma imagem centralizada horizontalmente sem sucesso ..

Eu tentei várias técnicas, como dividir o sistema de 12 grades em 3 blocos iguais, por exemplo

<div class="container">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>

Qual é o método mais fácil de obter uma imagem centralizada em relação à página?

Fixador
fonte
E aliás. convém dar uma olhada na seção "Colunas de compensação". twitter.github.com/bootstrap/scaffolding.html#gridSystem
mind85
Alguém sinalizou isso como não uma resposta, e eu concordo. Adicione isso como um comentário e sua resposta será excluída em breve.
tckmn
1
Se você tem img-responsiveaula na sua imgetiqueta, a imagem pode não estar centralizada. Consulte esta resposta do SO para obter uma explicação de por que o uso dacenter-blockclassebootstrapresolverá esse problema da maneira do bootstrap.
Cssyphus
Se você estiver usando inicialização, você pode fazê-lo: stackoverflow.com/a/59469712/4654957
Diego Venâncio

Respostas:

271

O Twitter Bootstrap v3.0.3 possui uma classe: bloco central

Blocos de conteúdo central

Defina um elemento para exibir: bloquear e centralizar por margem. Disponível como mixin e classe.

Só precisa adicionar uma classe .center-blockna imgtag, fica assim

<div class="container">
  <div class="row">
    <div class="span4"></div>
    <div class="span4"><img class="center-block" src="logo.png" /></div>
    <div class="span4"></div>
  </div>
</div>

No Bootstrap já tem chamada de estilo css .center-block

.center-block {
    display: block;
    margin-left: auto;
    margin-right: auto;
 }

Você pode ver uma amostra daqui

user3098434
fonte
1
a </div>tag de fechamento na containerdiv parece estar ausente. isso não funciona para mim em v3.3.7
tarabyte
141

A maneira correta de fazer isso é

<div class="row text-center">
  <img ...>
</div>
fabiangebert
fonte
25
isso não funcionou para mim quando usá-lo sobre isso - startbootstrap.com/round-about .. mas adicionando uma classe center-blockpara os <img>elementos trabalhou ..
Sumeet Pareek
3
text-center não irá funcionar em imagens com classe img-responsivo, mas o comentário acima (sobre o centro-block) resolve este problema
trojan
Uma observação: No Bootstrap v3.1.0, é possível centralizar a resposta img na coluna adicionando o centro de texto à coluna. Esse comportamento está quebrado na v3.3.4. Muito irritante. Css é uma merda.
F470071
você deve utilizar o centro-block em vez disso, como disse nos docs: getbootstrap.com/css/#images-responsive
Nacho
95

Atualização 2018

A center-blockclasse não existe mais no Bootstrap 4 . Para centralizar uma imagem no Bootstrap 4, use mx-auto d-block...

<img src="..." class="mx-auto d-block"/>
Zim
fonte
6
Apenas para adicionar uma pequena explicação ao 'Update 2018': mx-auto define as margens esquerda e direita como auto; exibição de conjuntos de blocos d: bloco
Michael Moriarty
85

Adicione 'bloco central' à imagem como classe - sem necessidade de css adicional

<img src="images/default.jpg" class="center-block img-responsive"/>
adswebwork
fonte
8
Não sei por que o -1 - ISTO É DE longe a melhor resposta! Ele usa a classe auxiliar incorporada no Bootstrap.
user2562923
4
No bootstrap 4, use em mx-autovez decenter-block
Quantum7 13/03
52

O bootstrap do Twitter tem uma classe que é centrada: .pagination-centrado

Funcionou para mim fazer:

<div class="row-fluid">
   <div class="span12 pagination-centered"><img src="header.png" alt="header" /></div>
</div>

O css da classe é:

.pagination-centered {
  text-align: center;
}
David Silva Smith
fonte
18
Ou talvez .text-centeraula?
Trejder
36

Você pode usar o seguinte. Ele suporta o Bootstrap 3.x acima.

<img src="..." alt="..." class="img-responsive center-block" />
Dulith De Costa
fonte
Obrigado por isso. Exatamente o que eu precisava hoje.
Ryan Wilson
28

Supondo que não haja mais nada ao lado da imagem, a melhor maneira é usar text-align: centerno imgpai:

.row .span4 {
    text-align: center;
}

Editar

Conforme mencionado nas outras respostas, você pode adicionar a classe CSS de autoinicialização .text-centerao elemento pai. Isso faz exatamente a mesma coisa e está disponível nas v2.3.3 e v3

Minha cabeça dói
fonte
Perfeito - Isso faz o trabalho. Mas diga que eu tenho um elemento <ul> abaixo da imagem ... Isso não alinha o centro conforme o esperado, há algo que eu possa adicionar? Obrigado
Fixer
1
Desde .row em uma das principais classes no twitter bootstrap. Eu recomendaria definir uma nova classe como nesta página twitter.github.com/bootstrap/index.html com o cabeçalho da classe.
baptme
1
@Fixer A <ul>deve centrar ainda align: jsfiddle.net/N74N7/1 Deve haver outro código CSS afetando-o
Minha cabeça dói
passou mais de 2 ou 3 horas e só essa linha ... obrigado!
Alamin
18

Funciona para mim. tente usarcenter-block

<div class="container row text-center">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img class="center-block" src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>
Leroy Gumede
fonte
6

Eu preciso do mesmo e aqui encontrei a solução:

https://stackoverflow.com/a/15084576/1140407

<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;
}
Shiv
fonte
Acho que as pessoas de bootstrap necessário adicioná-lo ao seu css
Muhammad Ahsan
Oi e obrigado! Estou usando o Bootstrap v3 agora. Eu adicionei isso ao meu img container div, então tive que especificar a largura exata (pelo menos) do meu div para que as coisas funcionassem. Se você não tiver contêiner ou tamanhos de imagem variáveis, adicione esta classe à sua imagem.
Inan
1

Você pode usar a propriedade margin com a classe bootstrap img.

.name-of-class .img-responsive { margin: 0 auto; }
Venkatesh Rajavetrivel
fonte
1

Parece que poderíamos usar um novo recurso HTML5 se a versão do navegador não for um problema:

em arquivos HTML:

<div class="centerBloc">
  I will be in the center
</div>

E no arquivo CSS, escrevemos:

body .centerBloc {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

E assim a div pode estar perfeitamente centralizada no navegador.

Laurent
fonte
3
Classe do seu div é chamado .centerBloc e seu arquivo do programa css body.loadingDiv ...
Martin
Corrigido agora @Martin
dtechplus
0

Você deveria usar

<div class="row fluid-img">
  <img class="col-lg-12 col-xs-12" src="src.png">
</div>

.fluid-img {
    margin: 60px auto;
}

@media( min-width: 768px ){
        .fluid-img {
            max-width: 768px;
        }
}
@media screen and (min-width: 768px) {
        .fluid-img {
            padding-left: 0;
            padding-right: 0;
        }
}
ed3d
fonte
0

Estou usando justify-content-centerclasse para uma linha dentro de um contêiner. Funciona bem com o Bootstrap 4.

<div class="container-fluid">
  <div class="row justify-content-center">
   <img src="logo.png" />
  </div>
</div>
rebaixamento
fonte
0

Eu criei isso e adicionei ao Site.css.

.img-responsive-center {
    display: block;
    height: auto;
    max-width: 100%;
    margin-left:auto;
    margin-right:auto;
}
Chris Catignani
fonte
-3

Você pode alterar o CSS da solução anterior como abaixo:

.container, .row { text-align: center; }

Isso deve centralizar todos os elementos no pai divtambém.

Nandu
fonte