Propriedade position

A propriedade position define o método de posicionamento dos elementos. Esta propriedade é mais frequentemente usada em conjunto com as propriedades top, right, bottom, left, que definem as margens superior, direita, inferior e esquerda, respectivamente.

Sintaxe

cssseletor {
  position: absolute | relative | fixed | static | sticky;
}

Valores para position

Valor Descrição
absolute Posicionamento absoluto. O elemento é removido do fluxo normal do documento e posicionado em relação ao ancestral posicionado mais próximo (se houver) ou em relação à janela do navegador.
relative Posicionamento relativo. O elemento é deslocado em relação à sua posição normal no fluxo do documento, mas o espaço que ele ocupava permanece reservado.
fixed Posicionamento fixo. O elemento é removido do fluxo normal do documento e posicionado em relação à janela do navegador. Permanece no lugar durante a rolagem da página.
static Posicionamento estático. O valor significa a ausência de posicionamento e o elemento se comporta normalmente.
sticky Posicionamento aderente (sticky). O elemento se comporta como relative até atingir uma posição especificada durante a rolagem, após a qual ele gruda no local especificado (como fixed).

Valor padrão: static.

Exemplo . Posicionamento absoluto

Vamos posicionar o elemento no canto superior esquerdo da tela com pequenas margens:

html<div class="elem"></div>

<div class="main">
  some long text
</div>
css.elem {
  position: absolute;
  top: 40px;
  left: 50px;
  width: 100px;
  height: 100px;
  background-color: #98fb98;
}

.main {
  width: 400px;
  text-align: justify;
  margin: 20px auto;
}

Результат:

Exemplo . Posicionamento absoluto

Agora vamos posicionar o elemento no canto superior direito da tela com pequenas margens:

html<div class="elem"></div>

<div class="main">
  some long text
</div>
css.elem {
  position: absolute;
  top: 40px;
  right: 50px;
  width: 100px;
  height: 100px;
  background-color: #98fb98;
}

.main {
  width: 400px;
  text-align: justify;
  margin: 20px auto;
}

Результат:

Exemplo . Posicionamento fixo

Com posicionamento fixo, o elemento permanecerá no lugar durante a rolagem:

html<div class="elem"></div>

<div class="main">
  some long text
</div>
css.elem {
  position: fixed;
  top: 40px;
  left: 50px;
  width: 100px;
  height: 100px;
  background-color: #98fb98;
}

.main {
  width: 400px;
  text-align: justify;
  margin: 20px auto;
}

Результат:

Exemplo . Posicionamento relativo

Com posicionamento relativo, o elemento é deslocado em relação à sua posição normal, mas os outros elementos se comportam como se o elemento não tivesse sido deslocado:

html<div class="container">
  <div class="elem elem1"></div>
  <div class="elem elem2"></div>
  <div class="elem elem3"></div>
</div>
css.container {
  display: flex;
  justify-content: flex-row;
}

.elem {
  margin: 0 3px;
  width: 100px;
  height: 100px;
  background-color: #add8e6;
}

.elem2 {
  position: relative;
  top: 20px;
  left: 30px;
  background-color: #e6addf;
}

Результат:

Exemplo . Aninhamento

Se o elemento pai tiver a propriedade position com o valor relative, então os elementos com posicionamento absoluto serão posicionados em relação ao pai:

html<div class="container">
  <div class="elem"></div>
</div>
css.container {
  position: relative;
  border: 1px solid red;
  width: 500px;
  height: 300px;
}

.elem {
  position: absolute;
  top: 0px;
  right: 0px;
  
  width: 100px;
  height: 100px;
  background-color: #add8e6;
}

Результат:

Exemplo . Aninhamento

Se o elemento pai tiver a propriedade position com o valor absolute, então os elementos com posicionamento absoluto serão posicionados em relação ao pai:

html<div class="container">
  <div class="elem"></div>
</div>
css.container {
  position: absolute;
  top: 30px;
  left: 30px;
  
  border: 1px solid red;
  width: 500px;
  height: 300px;
}

.elem {
  position: absolute;
  top: 0px;
  right: 0px;
  
  width: 100px;
  height: 100px;
  background-color: #add8e6;
}

Результат:

Exemplo . Posicionamento aderente (sticky)

Se um elemento tiver a propriedade position com o valor sticky, então o elemento se comporta como relative até atingir uma posição especificada durante a rolagem, após a qual gruda no local. Vamos criar um cabeçalho aderente (sticky):

html<h1>Main Site Header</h1>

<div class="header">header header header</div>

<div class="main">
  some long text
</div>
cssh1 {
  text-align: center;
}

.header {
  position: sticky;
  top: 0;
  
  padding: 20px;
  background: #f0f0f0;
  text-align: center;
  font-weight: bold;
}

.main {
  width: 400px;
  margin: 20px auto;
  border: 1px solid #ccc;
  padding: 20px;
  text-align: justify;
}

Результат:

Exemplo . Sem posição

Se um elemento receber posicionamento absoluto sem especificar a posição, o elemento permanecerá no local onde estava sem o posicionamento, mas os outros elementos deixarão de levá-lo em consideração:

html<div class="container">
  <div class="elem elem1"></div>
  <div class="elem elem2"></div>
  <div class="elem elem3"></div>
</div>
css.container {
  position: relative;
  border: 1px solid red;
  width: 500px;
  height: 300px;
}

.elem {
  display: inline-block;
}

.elem2 {
  position: absolute;
  
  width: 50px;
  height: 50px;
  background-color: #e6addf;
}
.elem1, .elem3 {
  width: 100px;
  height: 100px;
  background-color: #add8e6;
}

Результат:

Exemplo . Um eixo

No posicionamento absoluto, você pode definir a posição apenas em um eixo. Por exemplo, se definirmos a propriedade top, na vertical o elemento assumirá a posição correta, e na horizontal permanecerá onde estava:

html<div class="container">
  <div class="elem elem1"></div>
  <div class="elem elem2"></div>
  <div class="elem elem3"></div>
</div>
css.container {
  position: relative;
  border: 1px solid red;
  width: 500px;
  height: 300px;
}

.elem {
  display: inline-block;
}

.elem2 {
  position: absolute;
  top: 20px;
  
  width: 50px;
  height: 50px;
  background-color: #e6addf;
}
.elem1, .elem3 {
  width: 100px;
  height: 100px;
  background-color: #add8e6;
}

Результат:

Exemplo . Todas as posições

No posicionamento absoluto, você pode definir posições em todos os lados, sem definir largura e altura. Neste caso, o elemento ficará centralizado no bloco pai:

html<div class="container">
  <div class="elem"></div>
</div>
css.container {
  position: relative;
  border: 1px solid red;
  width: 500px;
  height: 300px;
}

.elem {
  position: absolute;
  top: 20px;
  bottom: 20px;
  left: 20px;
  right: 20px;
  background-color: #add8e6;
}

Результат:

Veja também

  • a propriedade z-index,
    que define a sobreposição de elementos