Diferença entre position: static, relative, absolute e fixed

Postado por: Pedro Rogério em

Neste tutorial vamos aprender a diferença entre position: static, relative, absolute e fixed no CSS.

position: static

Esse é o valor default para todo elemento HTML, o que significa que o elemento não tem posicionamento definido e seu fluxo ocorre normalmente no documento HTML.

#div1 {position: static}

Não é necessário definir position:static para os elementos da página pois esse é o valor default.

position: relative

Especificando position:relative agora você pode utilizar top ou bottom, right ou left para posicionar os elementos na página em relação ao lugar que ele ocuparia no fluxo do documento.

#div1 {
	position: relative;
    top: 40px;
    left: 20px;
}

Nesse exemplo posicionamos o elemento a 40px do topo e a 20px da esquerda em relação ao lugar que ele ocuparia no fluxo do documento. Vale lembrar que utilizando position:relative todo esse espaço que foi definido ainda continua sendo ocupado pelo elemento na página. Exemplo.

position: absolute

Utilizando position: absolute agora podemos posicionar exatamente nosso elemento em relação ao primeiro elemento pai com posição diferente de “static” numa sequência até parar no body.

#div1 {
	position: absolute;
    top: 40px;
    right:0;
}

Vale lembrar que a patir do momento que utilizamos position: absolute ele perde a ordem no fluxo do documento e o espaço ocupado passa a não existir mais. Exemplo.

position:relative + position: absolute

Observem o seguinte código HTML:

<div id="div1">
	<div id="div2"></div>
</div>

Se definirmos position: relative para a div1 e position: absolute para a div2 a partir de agora a div2 se posicionará absolutamente em relação a div1, não mais em ralação ao body da página. Exemplo.

position: fixed

#div1 {
	position: fixed;
    top:40px;
    left:10px;
}

Posiciona um elemento fixadamente na página em relação a janela, ou seja, independente de a pagina conter um scroll ou não, o elemento sempre ficará visíve ao usuário em relação as medidas definidas. Vale lembrar que esse tipo de posicionamento não funciona no Internet Explorer. Exemplo.

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o CSS no Lanche também escreve para o Pinceladas da Web, blog com assuntos gerais sobre desenvolvimento web.

Central Server

12 Responses to “Diferença entre position: static, relative, absolute e fixed”

  1. O position fixed não funciona no IE6- né? no IE7 funciona normalmente. Ou estou enganado?

  2. Ruan Carlos disse:

    Cara está errado ali.

    No ultimo exemplo está como static. O correto seria fixed.

    E
    Posiciona um elemento estaticamente
    Talvez possa ser
    Posiciona um elemento fixadamente

    Ruan Carlos

  3. @Julio César,

    Sim, no IE7 ele já funciona.

    @Ruan Carlos,

    Foi um erro meu que eu nem havia reparado, já consertei aqui, obrigado pela dica.

  4. Tiago A, disse:

    Grande Pedro Rogério! Ótimo post. Esclareceu minhas dúvidas. Abraço.

  5. Dan Alvares disse:

    Outra dica boa para entendimento de posicionamento com CSS é esse site aqui:
    http://www.barelyfitz.com/screencast/html-training/css/positioning/

    Em inglês.

  6. Massa!

    A novidade para mim foi o absolute ficar relativo ao item pai quando o pai está position:relative.

    Valeu a dica

  7. Rafael Veloso disse:

    Muito bom, esse é um post que tem que ser bem explicado como o pedro fez ai pq se não o leitor sai mais confuso ainda ehhehe…Valeu Pedrão

    t+

  8. Ruan Carlos disse:

    @Lourenzo

    Isso é muito comum em menus.

  9. PIetro disse:

    Alguem pode me explicar o que ou quem seria o item pai ??!!

  10. @Pietro,

    Observe a seguinte marcação HTML que você irá entender isso na hora:

    <div id=”pai”>
    <div id=”filho”></div>
    </div>

  11. Genio disse:

    Não esta muito bom essi tutorial poderia ser muito melhor..Basta caprichar um poco mais na explicação!
    ObG.

  12. eu disse:

    Tinha que ser o Genio mesmo!!!

Leave a Reply