Os top
, bottom
, left
, e right
propriedades são utilizadas com posição definida para a colocação de um elemento. Eles só têm efeito em elementos posicionados, que são elementos com a position
propriedade definida como algo diferente de static
. Por exemplo: relative
, absolute
, fixed
, ou sticky
.
div ( : || || auto || inherit; )
Você pode usá-lo, por exemplo, para colocar um ícone no lugar:
button .icon ( position: relative; top: 1px; )
Ou posicione um elemento especial dentro de um contêiner.
.container ( position: relative; ) .container header ( position: absolute; top: 0; )
O valor para top
, bottom
, left
e right
pode ser qualquer um dos seguintes:
- qualquer um dos comprimentos válidos de CSS
- uma porcentagem da altura do elemento que contém (para
top
ebottom
) ou largura (paraleft
eright
) auto
inherit
O elemento geralmente se afastará de um determinado lado quando seu valor for positivo e em direção a ele quando o valor for negativo. No exemplo abaixo, um comprimento positivo para top
move o elemento para baixo (para longe do topo) e um comprimento negativo para top
move o elemento para cima (em direção ao topo):
Veja o
topo da caneta : valores positivos e negativos por Matsuko Friedland (@missmatsuko)
no CodePen.
Posição
A colocação de um elemento com um valor de top
, bottom
, left
, ou right
depende do seu valor para position
. Vamos dar uma olhada no que acontece quando definimos o mesmo valor para top
em elementos com valores diferentes para position
.
static
A top
propriedade não tem efeito em elementos não posicionados (elementos com position
definido como static
). É assim que os elementos são posicionados por padrão. Você pode usar position: static;
como um método para desfazer o efeito de top
em um elemento.
relative
Quando top
é definido em um elemento com position
definido como relative
, o elemento se moverá para cima ou para baixo em relação ao seu posicionamento original no documento.
Veja o Pen
Top: parente de Matsuko Friedland (@missmatsuko)
no CodePen.
absolute
Quando top
é definido em um elemento com position
definido como absolute
, o elemento se moverá para cima ou para baixo em relação ao seu ancestral posicionado mais próximo (ou ao documento, se não houver ancestrais posicionados).
Nesta demonstração, a caixa rosa à esquerda está posicionada 50 px abaixo do topo da página porque não possui elementos ancestrais posicionados. A caixa rosa à direita está posicionada 50 px abaixo do topo de seu pai, porque o pai tem um position
de relative
.
Veja o Pen
Top: absoluto de Matsuko Friedland (@missmatsuko)
no CodePen.
fixed
Quando top
é definido em um elemento com position
definido como fixed
, o elemento se moverá para cima ou para baixo em relação à janela de visualização do navegador.
Veja o Pen
Top: corrigido por CSS-Tricks (@ css-tricks)
no CodePen.
À primeira vista, pode parecer que não há diferença entre absolute
e fixed
. A diferença pode ser vista quando você os compara em uma página que tem conteúdo suficiente para rolar. Conforme você rola para baixo, o fixed
elemento de posição está sempre à vista, enquanto o absolute
elemento de posição rola para longe.
Veja o Pen
Scrolling: fixed vs. absoluto por CSS-Tricks (@ css-tricks)
no CodePen.
sticky
Quando top
é definido em um elemento com position
definido como sticky
, o elemento se move para cima ou para baixo em relação ao ancestral mais próximo com uma caixa de rolagem (ou a janela de visualização, se nenhum ancestral tiver uma caixa de rolagem), limitado aos limites do elemento que o contém.
Definir top
um sticky
elemento posicionado não faz muito, a menos que seu contêiner seja mais alto do que ele e você tenha conteúdo suficiente para rolar. Assim como com fixed
, o elemento permanecerá visível enquanto você rola. Ao contrário fixed
, o elemento ficará fora de vista assim que alcançar as bordas do elemento que o contém.
Veja Pen
Scrolling: fixed vs. sticky por CSS-Tricks (@ css-tricks)
no CodePen.
Pegadinhas
Definindo lados opostos
Você pode definir um valor para cada um top
, bottom
, left
, e right
em um único elemento. Quando você define valores para lados opostos ( top
e bottom
, ou left
e right
), o resultado pode nem sempre ser o que você espera.
Na maioria dos casos, bottom
é ignorado se top
já estiver configurado e right
será ignorado se left
já estiver configurado. Quando a direção é definida como rtl
(da direita para a esquerda), left
é ignorado em vez de right
. Para que cada valor tenha efeito, o elemento deve ter um position
definido como absolute
ou fixed
e height
definido como auto
(padrão).
Neste exemplo, partimos top
, bottom
, left
, e right
para `20px`, e esperar que cada um dos lados da caixa interna ser 20px longe dos lados da caixa exterior:
Veja a
configuração da caneta superior, inferior, esquerda e direita por CSS-Tricks (@ css-tricks)
no CodePen.
Quando fixo não é relativo à janela de visualização
Os elementos com position
definido como fixed
nem sempre são posicionados em relação à janela de visualização. Ele será posicionado em relação ao seu ancestral mais próximo com um transform
, perspective
ou filter
conjunto de propriedades para algo diferente de none
, se houver.
Adicionar ou remover espaço
Se você posicionou um elemento e descobriu que agora há um espaço vazio ou espaço insuficiente onde você esperava, isso pode ter a ver se o elemento está dentro ou fora do fluxo do documento.
Quando um elemento é retirado do fluxo do documento, significa que o espaço que ocupava originalmente na página desaparece. Este é o caso quando um elemento é posicionado absolute
ou fixed
. Neste exemplo, a caixa que contém o elemento posicionado absolutamente foi recolhida porque o elemento posicionado absolutamente foi removido do fluxo do documento:
Veja o
fluxo do Pen Document de Matsuko Friedland (@missmatsuko)
no CodePen.
Suporte para navegador
Você pode dar uma olhada, mas não há preocupações cross-browser para a top
propriedade. Use à vontade.