Você pode determinar o tipo de posicionamento para uma área ou elemento. Para isso, é utilizada a propriedade position
. Esta propriedade indica como um elemento deve ser posicionado. No total, existem quatro variantes de posicionamento disponíveis.
• static
– nenhum posicionamento especial é realizado e segue o fluxo normal do texto.
• relative
– ocorre um posicionamento relativo, baseado na posição normal ou inicial do elemento.
• absolute
– ocorre um posicionamento absoluto pelas propriedades top, bottom, left e right. Elementos posicionados absolutamente estão fora do fluxo normal do texto. A posição absoluta é calculada em relação às margens do elemento pai (mas apenas se este não possuir a propriedade position: static).
• fixed
– o elemento é posicionado de forma absoluta. Enquanto rola, o elemento permanece fixo.
As duas primeiras variantes permitem um posicionamento variável. Aqui, os elementos são posicionados em relação um ao outro. Os dois exemplos a seguir mostram como esse tipo de posicionamento poderia ser feito:
• O Elemento 2 é posicionado deslocado em 30 pixels em relação ao Elemento 1.
• O Elemento 2 é posicionado atrás do Elemento 1.
É diferente com fixed e static. Com estes, os elementos podem ser posicionados em locais muito específicos. As instruções de posicionamento referem-se ao elemento pai ou à janela do navegador. Um exemplo disso:
• O Elemento 1 é posicionado exatamente a 30 pixels da margem direita e a 20 pixels da margem superior da janela do navegador.
A seguir, as diferentes variantes de posicionamento são detalhadamente apresentadas. No entanto, antes um aviso: No contexto de posicionar elementos, o chamado Float é importante. Este importante princípio de CSS será abordado mais detalhadamente no próximo tutorial. Basicamente, o Float trata de como os elementos do site fluem no documento. Os elementos são pressionados o máximo possível na direção correspondente. Através do tipo de posicionamento, é possível determinar explicitamente o fluxo dos elementos.
O posicionamento relativo
Através do uso do posicionamento relativo com position: relative, duas coisas acontecem:
• A caixa é movida para fora de seu fluxo normal.
• O posicionamento original do elemento é reservado.
Ao reservar o posicionamento original, os outros elementos se comportam como se o elemento ainda estivesse no lugar.
Um exemplo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> div { width: 20%; background-color: white; padding: 10px; border: 1px solid black; margin: 5px; } #box { position: relative; top: 25px; right: 25px; background-color:#33CCFF; } </style> </head> <body> <div id="box">Caixa 1</div> <div>Caixa 2</div> <div>Caixa 3</div> </body> </html>
Aqui três caixas foram definidas.
As duas caixas 2 e 3 não receberam nenhuma instrução de posicionamento. Portanto, seguem o fluxo normal do documento. A Caixa 1, por outro lado, foi posicionada de forma relativa. Isso significa que as Caixas 2 e 3 são completamente independentes da Caixa 1. O espaço ocupado pela Caixa 1 não é afetado por essas caixas. Através das instruções top, bottom, left
e right
, as caixas são posicionadas. No posicionamento relativo, a posição inicial no fluxo do documento é considerada.
• top: 25px
– a caixa é deslocada para baixo em 25 pixels. Assim, 25 pixels são inseridos acima da posição normal da caixa.
• right: 25px
– a caixa é deslocada para a esquerda em 25 pixels. Assim, 25 pixels são inseridos à direita da posição normal da caixa.
As medidas em pixels são relativas à posição original. As instruções determinam onde o valor é inserido, ou seja, acima e à direita. Este aspecto é crucial. As instruções não determinam para onde a caixa deve ser movida.
O posicionamento absoluto
Continuando com o posicionamento absoluto. Este tipo de posicionamento retira completamente o elemento do fluxo. Os outros elementos na página se comportam como se o elemento não existisse de forma alguma.
Um exemplo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> div { width: 20%; background-color: white; padding: 10px; border: 1px solid black; margin: 5px; } #box { position: absolute; top: 25px; right: 25px; background-color:#33CCFF; } </style> </head> <body> <div id="box">Caixa 1</div> <div>Caixa 2</div> <div>Caixa 3</div> </body> </html>
Aqui também foram definidas três caixas. A Caixa 1 está posicionada absolutamente.
Ao contrário do posicionamento relativo, para a Caixa 1 nenhum espaço é reservado. As caixas 2 e 3 deslocam-se para cima.
As instruções de posicionamento top, right, bottom
ou left
agora não mais se referem à posição original da caixa no fluxo. Em vez disso, referem-se ao próximo elemento circundante que foi posicionado de forma relative, absolute
ou fixed
. Se não houver nenhum elemento circundante, o posicionamento é relativo ao elemento pai de mais alto nível na árvore do documento, ou seja, ao html
.
Uma posição fixa com fixed
Com position: fixed
é possível fixar elementos. Também aqui um exemplo:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> p { margin-left: 25%; } #fixiert { position: fixed; top: 20px; left: 20px; background-color:#33FFCC; width: 20%; padding: 10px; border: 1px solid black; } </style> </head> <body> <div id="fixiert">Efeito de fragmentação Parte 1</div> <p>Por um curto período de tempo, o mais recente tutorial ou vídeo-treinamento está disponível para visualização online ou o conteúdo da categoria de download está livre de pontos. Saiba mais aqui ...</p> </body> </html>
A caixa fixa não rola, mas permanece sempre na posição atribuída a ela.
Para caixas fixas, o elemento circundante é sempre a janela do navegador.
Por favor, observe que, especialmente no contexto da fixação de elementos em navegadores mais antigos, surgem problemas significativos. Por exemplo, o IE6 não faz aquilo para o qual foi projetado. Para quem deseja/must otimizar seus sites também para este navegador, agora tem duas opções:
• Abster-se de caixas fixas.
• Utilizar hacks para o IE.
Se desejarem utilizar um hack, recomendo a página http://thestyleworks.de/tut-art/iewinfixed.shtml. Ali é demonstrado como criar caixas fixas mesmo para este navegador através de um pequeno script JavaScript.