Como centralizar horizontalmente um elemento de amplitude dentro de uma div


122

Estou tentando centralizar os dois links 'view website' e 'view project' dentro da div circundante. Alguém pode apontar o que preciso fazer para que isso funcione?

JS Fiddle: http://jsfiddle.net/F6R9C/

HTML

<div>
  <span>
    <a href="#" target="_blank">Visit website</a>
    <a href="#">View project</a>
  </span>
</div>

CSS

div { background:red;overflow:hidden }

span a {
    background:#222;
    color:#fff;
    display:block;
    float:left;
    margin:10px 10px 0 0;
    padding:5px 10px
}


Aqui estão dois métodos simples para elementos de centro dentro de uma div, na vertical, horizontal ou ambos (puro CSS): stackoverflow.com/a/31977476/3597276
Michael Benjamin

Respostas:


134

Uma opção é <a>exibir inline-blocke aplicar text-align: center;no bloco que contém (remova o flutuador também):

div { 
    background: red;
    overflow: hidden; 
    text-align: center;
}

span a {
    background: #222;
    color: #fff;
    display: inline-block;
    /* float:left;  remove */
    margin: 10px 10px 0 0;
    padding: 5px 10px
}

http://jsfiddle.net/Adrift/cePe3/


1
Isso fez o truque para mim em um tema moderadamente complexo que eu precisava invadir um pouco. O link para o JSFiddle mais adiante foi incrível para me permitir testar. Editei esta entrada para incluir a alteração "overflow: hidden" para "overflow: hidden;"
chamou ..

1
Parece uma solução muito limpa.
Jim Aho

Veja a resposta de Ahmed Bahtity abaixo, style = "text-align: center", é muito mais conciso.
Wallace Howery


10
<div style="text-align:center">
    <span>Short text</span><br />
    <span>This is long text</span>
</div>

8

Aplicar inline-blockao elemento que deve ser centralizado e aplicar text-align:centerao bloco pai fez o truque para mim.

Funciona mesmo em <span>tags.


1

Os spans podem ficar um pouco difíceis de lidar. se você definir a largura do intervalo de ensino, poderá usar

margin: 0 auto;

para centralizá-los, mas eles acabam em linhas diferentes. Eu sugeriria tentar uma abordagem diferente para sua estrutura.

Aqui está o jsfiddle com o qual descubro a cabeça: jsFiddle

EDITAR:

A resposta do Adrift é a solução mais fácil :)


0

Suponho que você queira centralizá-los em uma linha e não em duas linhas separadas, com base no seu violino. Se for esse o caso, tente o seguinte css:

 div { background:red;
      overflow:hidden;
}
span { display:block;
       margin:0 auto;
       width:200px;
}
span a { padding:5px 10px;
         color:#fff;
         background:#222;
}

Removai o flutuador desde que você deseja centralizá-lo e, em seguida, ampliei a extensão em torno dos links adicionando margem: 0 automático a eles. Por fim, adicionei uma largura estática ao intervalo. Isso centraliza os links em uma linha dentro da div vermelha.


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.