Busca

Boas práticas de Desenvolvimento com Padrões Web


Centralizando um objeto na Horizontal e Vertical com CSS

Objeto no centro da tela Uma das dúvidas mais freqüentes é esta: Como fazer para que um objeto fique no centro da tela usando css? A resposta está nos passos abaixo! Colocando a imagem: Neste exemplo vamos usar uma imagem, mas você pode perfeitamente usar um div, o processo é o mesmo. Coloque na imagem (ou no div) um nome [...]

06/12/2007 por Diego Eis
14 Comentários

Objeto no centro da tela

Uma das dúvidas mais freqüentes é esta: Como fazer para que um objeto fique no centro da tela usando css?
A resposta está nos passos abaixo!

Colocando a imagem:

Neste exemplo vamos usar uma imagem, mas você pode perfeitamente usar um div, o processo é o mesmo.
Coloque na imagem (ou no div) um nome de ID… Colocamos neste exemplo o ID com nome “centro”.

<img src=”imagem.gif” id=”centro” />

Veja o html deste passo.

Definindo as dimensões do objeto:

Agora, no css, defina as dimensões do objeto (imagem ou div).
Nossa imagem tem 100 x 100 px’s, então vamos definir no css que a largura será de 100px (width:100px;) e que a altura também será de 100px (height:100px;).

#centro {
width:100px;
height:100px;
}

Veja o html deste passo.

Alinhando:

Estamos quase no final, você pode perceber que o objeto está um pouco desalinhado do centro. Vamos agora posicioná-lo… É aqui começa o truque.
Defina para nosso objeto, uma posição absoluta (position:absolute;), ele deverá ficar a 50% de distância do topo (top:50%;) e 50% de distância do lado esquerdo do documento (left:50%;).
O css não usa o centro do objeto como referência para o posicionamento, mas sim as extremidades, portanto, o que ficará no centro depois deste código, será o canto esquerdo superior do objeto.

#centro {
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
}

Veja o html deste passo.

O grande final:

Eis o truque para tirar a diferença, não é nada de outro mundo.
Você irá definir ao objeto duas margens negativas… a margem do topo (margin-top) e a margem da esquerda (margin-left). Na margem do topo, você simplesmente colocará um valor negativo, este valor será a metade da altura do objeto, neste caso, será -50px (margin-top:-50px;) e no lado esquerdo você fará a mesma coisa, mas o valor será a metade da largura do objeto, neste caso -50px (margin-left:-50px;).

#centro {
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
margin-top:-50px;
margin-left:-50px;
}

Veja o html final.

14 Comentários

Sua opinião:

Vamos elevar o nível de discussão. Exponha sua opinião, sua crítica.



RSS dos comentários deste post
URL para Trackback

14 Comentários

Eduardo 08/12/2007 às 15:31

Muito bom! Simples e direto.

Leandro Facchinetti 12/12/2007 às 03:58

Essa é uma boa técnica. Há outra solução na qual o tamanho do elemento não precise ser conhecido previamente?
Outra coisa: você notou que todos os seus pontos-e-vírgula-fecha-parêntese se tornaram smileys com olhinhos piscantes?

Anderson Bispo 26/12/2007 às 17:27

Leandro, nesse site fala sobre centralização e dá uma dica de como fazer quando o tamanho do elemento não for conhecido previamente, onde tem “When you don’t know the width”. Espero que ajude.

Abraço!

Anderson Bispo 26/12/2007 às 17:28

Faltou o link do site: http://css-discuss.incutio.com/?page=CenteringBlockElement

=)
Abraço!

Vinicius 27/12/2007 às 19:09

E em relacao a tao famosa duvida de centralizar a imagem dentro de uma DIV, como fazer ? Abraço

Leandro Facchinetti 02/01/2008 às 17:33

Anderson, ajudou, sim. Obrigado.
E desculpa a demora em responder, é que seu comentário só apareceu no feed agora.

Daniel 12/02/2008 às 01:25

Em casa ficou perfeito no firefox, porém no trabalho no IE7 a página fica com sobras, barras de rolagem na vertical e horizontal, e o objeto centralizado em relação a esse tamanho, então a página inicial torta.

Raphael Azeredo 14/01/2009 às 12:07

Valeu excelente tutorial, obrigado :)

Gabriel Tadra 15/01/2009 às 02:48

http://www.plugmasters.com.br/sys/materias/600/1/Centralizar-a-Pagina-na-horizontal-e-vertical

Copiadores de plantão???

Bom tutorial :}

uma dúvida:
Tipo, o tamanho da minha imagem é 375 x 104

se eu dividir 375/2 = 187,5

nesse caso eu arredondei pra menos.

seria o certo?

Priscilla 25/01/2009 às 09:58

Muito bom!
Obrigada :)

aryel gomes 13/02/2009 às 16:40

na minha opinião objeto é aquilo que tudo nos vemos!

Décio 09/03/2009 às 17:14

Valeu pelo tutô! Muito simples e eficiente!

Lorena 13/03/2009 às 17:13

Perfeito

nem acredito que era tão simples!

Obrigada!

Lincoln 23/04/2009 às 10:31

realmente … a técnica de Alinhamento vertical e horizontal com CSS ajuda muito. Usei essa muito para fazer popups com jQuery com mensagens do site.