The Wayback Machine - https://web.archive.org/web/20101125172719/http://maujor.com/tutorial/meio_tela.php

:: Posicionar um objeto ou página no centro da tela ::

Introdução

Neste tutorial vou mostrar a técnica CSS para posicionar um objeto ou uma página no meio da tela do monitor do usuário, ou seja centrar na horizontal e na vertical, independente da resolução usada. Ao final da leitura desse tutorial você estará capacitado a posicionar com uso das CSS um objeto em qualquer lugar na tela, do monitor do usuário.

Posicionando uma imagem

Vou iniciar mostrando como posicionar uma imagem na tela. Usarei a imagem abaixo que nomeei de logo.gif:

logo de 220 por 80 pixel

O código HTML que coloca a imagem na tela é

............
<body>
<img src="logo.gif" width="220" height="80" 
alt="logo de 220 por 80 pixel">
</body>
...........

Página mostrando a renderização do código acima

Como você observou, a imagem está posicionada no canto superior esquerdo da tela com as margens superior (aproximadamente 20px) e esquerda (aproximadamente 10px) default, variando conforme o browser usado.

Vamos a seguir atribuir uma id para a imagem e estilizar o posicionamento da id. Escolhi o nome imgpos para a id da imagem e o HTML agora é:

...........
<body>
<img src="logo.gif" width="220" height="80" 
alt="logo de 220 por 80 pixel" id="imgpos" >
</body>
...........

As regras CSS para posicionamento.

A propriedade CSS que possibilita posicionar um elemento qualquer (no nosso caso o elemento img que tem a id="imgpos") é a propriedade position complementada pelas propriedades left e top e que ao assumir o valor absolute, controla a posição do elemento tomando como origem do sistema de coordenadas o canto superior esquerdo da viewport.

Ops! complicou? Explico!

Observe as regras CSS para posicionar com left e top (esquerdo e superior ):

position: absolute;/* posiciona em 
relação um canto superior esquerdo da tela */ 
left: 90px; /* posiciona a 90px para a esquerda */ 
top: 70px; /* posiciona a 70px para baixo */

Observe a figura explicativa.

Mostra um logo no meio e as distâncias conforme o código acima

Notar que na regra CSS, ao definir a posição absolute utilizou as propriedades (left ) que define o quanto a imagem dista da margem esquerda e a propriedade (top) que define o quanto a imagem dista do topo.

A referência, como já foi dito acima é o canto superior esquerdo da tela e o ponto que ocupa a posição definida é o canto superior esquerdo da figura ou elemento posicionado.

IMPORTANTE: Você poderá alterar as referências da tela e consequentemente da figura ou elemento posicionado, mudando as propriedades para right e bottom . E valem as combinações para os quatro cantos da tela.

left com top: referência é o canto superior esquerdo;
left com bottom: referência é o canto inferior esquerdo;
right com top : referência é o canto superior direito;
right com bottom: referência é o canto inferior direito.

Qualquer unidade de medida CSS pode ser usada para posicionar, inclusive medidas relativas como são aquelas expressas em porcentagens.

Assim é válido declarar:

position: absolute;
left: 50%;
top: 50% 

Desafio:

Você seria capaz de interpretar a regra acima e imaginar qual a posição ocupada pelo logo na tela já que a regra diz: posicione-se 50% para a esquerda e 50% para baixo na tela.

Página mostrando a posição ocupada pelo logo

Era esta a posição que você imaginou?

Ou imaginou a figura no centro da tela?

Lembre-se o ponto que está a 50% do topo e 50% para a esquerda é o canto superior esquerdo da figura.

A figura não está no centro da tela.

Volte lá e confira!

Posicionando no centro da tela

Conseguimos posicionar o canto superior esquerdo da figura no meio da tela com os valores declarados em porcentagens. E agora, para que o CENTRO da figura ocupe o meio da tela basta arrastar a figura para a esquerda e para cima de um valor igual a:

para a esquerda: metade da largura da figura;

para cima: metade da altura da figura.

A figura é um retângulo de 220 x 80 e os valores para arrastar são:

para a esquerda: 220px/2 = 110px;

para cima: 80/2 = 40px.

A propriedade CSS que determina o afastamento em volta dos elementos é margin.

Como a figura deve ser arrastada para a esquerda basta declarar uma margin-left negativa! E o arrastar para cima consegue-se com uma margin-top negativa!

Página mostrando o logo no centro da tela.

E o código completo da página para seus estudos.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
charset=iso-8859-1">
<title>Posicionar um objeto na tela</title>
<style type="text/css">
#imgpos {
position:absolute;
left:50%;
top:50%;
margin-left:-110px;
margin-top:-40px;
}
</style>
</head>
<body>
<img src="logo.gif" width="220" height="80" 
alt="logo de 220 por 80 pixel" id="imgpos">
</body>
</html>

Aplicando para uma página web

Você poderá aplicar esta técnica para posicionar uma página toda no centro da tela. Isto só faz sentido prático em geral quando a página tem altura reduzida e não há barra de rolagem vertical. Se você por alguma razão tem uma página para entrada no site, daquele tipo "Clique aqui para entrar" e que normalmente tem um design de dimensões reduzidas, poderá colocá-la no meio da tela com esta técnica.

Nota: A página que você vai visualizar foi desenvolvida com tabelas à maneira ultrapassada de projetar web sites (como são 99% dos web sites à época que este tutorial foi escrito).
Mostro este código "ruim", no entanto, a técnica é válida para sites web standards.

Página código ruim, exemplificando o conceito acima

O código fonte da página, mostra o uso da técnica.

Conclusões

Posicionar um elemento no centro da tela é uma tarefa bem simples com uso das CSS. Como você já deve ter concluido, usando está técnica pode-se posicionar um elemento HTML em qualquer lugar na tela do usuário, tanto usando medidas absolutas como valendo-se de medidas relativas.

Última modificação: 2009/01/23 08:31:56 GMT

Criado em: 2004-06-20

banner clickmaujor
Morty Proxy This is a proxified and sanitized view of the page, visit original site.