Gerador da propriedade CSS position
Alterne entre os 5 valores de position do CSS (static, relative, absolute, fixed, sticky) em uma interface gráfica, veja o efeito de top/right/bottom/left e z-index em tempo real e gere o código CSS gratuitamente.
Dicas
- Mude para position: relative e defina top/left para deslocar visualmente a Caixa B de sua posição original — repare que a Caixa C (o elemento seguinte) não se move nem um pouco.
- Ao mudar para absolute ou fixed, a Caixa B é completamente removida do fluxo normal, então a Caixa C se desloca para ocupar o espaço deixado por ela.
- z-index controla a ordem de sobreposição quando elementos se sobrepõem, mas não tem efeito algum em elementos com position: static — mude o position antes de testar "Definir z-index".
- position: sticky só funciona dentro de um contêiner com rolagem. Role a própria caixa de pré-visualização para ver o elemento travar no lugar no meio do caminho.
- O código CSS gerado pode ser copiado e colado diretamente na sua própria folha de estilos — teste em uma página real para confirmar que o visual é o mesmo.
Perguntas frequentes
Curiosidade — O longo caminho até a padronização do position: sticky
O CSS tem static, relative, absolute e fixed desde seus primórdios, mas criar um cabeçalho ou barra lateral que só travasse no lugar depois de rolar além de certo ponto exigia, por muito tempo, observar eventos de rolagem com JavaScript e alternar manualmente para position: fixed. Não havia forma de expressar esse comportamento apenas com CSS.
A ideia por trás do position: sticky já foi proposta por volta de 2012 na especificação CSS Positioned Layout Module Level 3, mas se mostrou difícil de implementar bem. O Safari lançou uma versão inicial com prefixo de fornecedor (-webkit-sticky) por volta de 2013, o Chrome só passou a suportar a palavra-chave padrão sticky em 2017, e foi somente por volta de 2020 que todos os principais navegadores, incluindo o Firefox, ofereciam suporte confiável e consistente.
Sob o capô, o comportamento de "travar no meio da rolagem" do sticky é melhor descrito como um híbrido de relative e fixed: o elemento se comporta como relative em circunstâncias normais e passa a se comportar como fixed assim que a posição de rolagem atinge o deslocamento definido. Essa mudança só acontece dentro do intervalo de rolagem do elemento pai — motivo pelo qual o sticky costuma parecer que "não funciona" quando o overflow ou a altura do pai atrapalham.
Hoje, sticky é uma técnica consagrada no design web: fixar a linha de cabeçalho de uma tabela, manter um sumário visível durante a rolagem, entre outros usos. Eliminar a necessidade de escutar a rolagem via JavaScript foi um ganho real tanto em desempenho quanto em simplicidade do código.