Relembrando: Fluxo é a forma como os elementos, em bloco ou inline são dispostos na página. Serão apresentados da forma que foram declarados dentro do documento xhtml.
obs: No posicionamento absoluto a posição do elemento será alterada de acordo com a posição do elemento pai.
O posicionamento fixed não acompanha a rolagem. Ou seja permanece fixo no lugar que está.
Para que a página fique da forma desejada é necessário dispor os elementos da forma correta. A css responsável por esta organização é a position com os valores: static, relative, absolute e fixed. São eles:
É o valor padrão para a propriedade. Se definirmos apenas a largura e a altura de duas divs, no navegador elas seguirão a ordem padrão dos elementos e uma ficará embaixo da outra.
Aqui é possível alterar a distância da div em relação ao elemento pai. Pode-se utilizar right ou left, top ou bottom. Para posicionar um elemento de forma relativa, a propriedade position deve ser definida para relative. A diferença entre os dois tipos de posicionamento é a maneira como o posicionamento é calculado. O posicionamento para posição relativa é calculado com base na posição original do elemento no documento. Isto significa uma movimentação do elemento para a esquerda, para a direita, para cima ou para baixo. Assim fazendo o elemento ocupa um espaço após ser posicionado. Como exemplo de posicionamento relativo serão posicionadas três imagens relativamente as suas posições originais na página. Notar como as imagens deixam um espaço vazio nas suas posições originais no documento:
O elemento fica posicionado absolutamente em relação ao elemento pai que não tenha a propriedade position definida como static. Pode ser posicionado em qualquer lugar. No código a seguir a segunda div foi definida como absolute precisando de um ponto de referência já que não pertence mais ao fluxo normal. Como ela não está dentro de outro elemento, pegará como última referência o elemento body (janela do navegador, ela está no top à esquerda). Como a esquerda foi definida com 4px de distância do elemento pai, ela ficará afastada do browser e também do topo com a mesma distância. Na folha de estilos ficaria assim:
<div style="width:450px; height:140px; background: #008B8B; position:absolute; top:4px; left:4px; padding:10px; font-size: 21px; color:#F5F5DC;">Esta é a segunda div e foi definida como absolute precisando de um ponto de referência já que não pertence mais ao fluxo normal. Como ela não está dentro de outro elemento, pegará como última referência o elemento body (janela do navegador, e foi parar no top à esquerda.</div>No exemplo abaixo a segunda div, por estar dentro da primeira e esta ter o position:relative, na hora de se posicionar vai procurar os limites da primeira div. Por ter o mesmo tamanho da primeira div, mas estar distante 10px do topo, a segunda div fica em parte fora dos limites da primeira, mas sem alterar o tamanho dela. A conclusão é de que um elemento posicionado absolutamente não altera as dimensões do seu recipiente. Isso facilita bastante a criação de layouts.