Exemplos: Posicionamento CSS
position: fixed
Um elemento com position: fixed gruda em um ponto e não se move ao rolar. Para demonstrar isso com segurança dentro do artigo (sem grudar na janela inteira do navegador), o quadro abaixo usa transform no contêiner. Isso cria um novo containing block, então o fixed gruda ao contêiner em vez da viewport. Role o conteúdo interno:
Role esta área para baixo. A barra acima permanece fixa no topo do quadro.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Fim do conteúdo de exemplo.
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 100; /* fica sobre o conteúdo */
}position: static (padrão)
Todos os elementos HTML são static por padrão. Eles seguem o fluxo normal do documento. As propriedades top, left, etc. não têm efeito.
position: relative
O elemento é deslocado em relação à sua posição original. Ele continua ocupando o espaço original no fluxo (note o "buraco" abaixo do item amarelo).
top:20 left:15
.rel {
position: relative;
top: 20px;
left: 15px; /* desloca, mas ocupa o espaço original */
}position: absolute
O elemento é removido do fluxo e posicionado em relação ao ancestral posicionado mais próximo (aquele com position ≠ static). Se não houver nenhum, usa o viewport.
top:8 right:8
.container {
position: relative; /* cria o contexto de posicionamento */
}
.abs {
position: absolute;
top: 8px;
right: 8px;
}Caso prático: card com badge
Um uso clássico de absolute dentro de um container relative.
Produto Alpha
R$ 199,00
Produto Beta
R$ 299,00 R$ 209,00
.card { position: relative; } /* cria contexto */
.badge {
position: absolute;
top: 10px;
right: 10px;
}position: sticky
O elemento comporta-se como relative até atingir o limiar de scroll definido; então gruda como se fosse fixed. Role a caixa abaixo:
.section-header {
position: sticky;
top: 0; /* gruda quando chegar a 0px do topo */
background: #fff;
z-index: 1;
}z-index: ordem de empilhamento
Quando elementos se sobrepõem, o z-index determina qual fica na frente. Valores maiores aparecem sobre os menores.
Altere o z-index de cada caixa interativamente:
Lembre-se
z-index só funciona em elementos com position diferente de static (relative, absolute, fixed ou sticky).