O CSS possui dois atributos básicos mais importantes que os desenvolvedores de front-end devem dominar: display
e position
.
display
O atributo especifica o layout da página da web. Dois layouts importantes, layout flexívelflex
e layout de gradegrid
.
Este artigo descreve position
propriedades muito úteis . Espero que, após 10 minutos de leitura, o ajude a entender facilmente o posicionamento da página da Web e a explicar como o navegador calcula a posição dos elementos da página da Web, especialmente o sticky
posicionamento recém-introduzido .
Primeiro, o papel do atributo position
position
Os atributos são usados para especificar a posição de um elemento em uma página da Web. Existem cinco métodos de posicionamento, ou seja, o position
atributo possui cinco valores principais.
estático
relativo
fixo
absoluto
pegajoso
Os cinco valores são apresentados sucessivamente abaixo. O último só sticky
é suportado pelo navegador em 2017, este artigo se concentrará na introdução.
Segundo, o valor do atributo estático
static
É position
o valor padrão do atributo. Se o position
atributo for omitido , o navegador considerará o elemento a ser static
posicionado.
Neste momento, o navegador determinará a posição de cada elemento na ordem do código-fonte, chamado "fluxo normal" (fluxo normal).
Cada elemento no nível do bloco ocupa seu próprio bloco e não há sobreposição entre os elementos.Esta posição é a posição padrão do elemento.
Note-se que a static
posição de elemento como um resultado de posicionamento, o navegador é discricionária, por isso, quando top
, bottom
, left
, right
estas quatro propriedades é inválido.
、 、 Relativo , absoluto , fixo
relative
, absolute
, fixed
Estas três propriedades têm uma coisa em comum, são posicionados em relação a um certo ponto, os únicos mentiras diferença nos diferentes pontos de base. Portanto, desde que você entenda quais são seus pontos básicos, é fácil entender os três valores de atributo.
Nenhuma dessas três posições afetará a posição de outros elementos; portanto, pode haver sobreposição entre os elementos.
3.1 valor do atributo relativo
relative
Representa, em relação a uma posição padrão (isto é, static
de posição) é deslocado, isto é, a posição padrão do elemento de posicionamento é um ponto de base.
Ele deve ser usado com top
, bottom
, left
, right
para uso com esses quatro atributos, para especificar a direção e distância do deslocamento.
div { posição : relativa ; superior : 20 px ; }
No código acima, o div
elemento é deslocado para baixo a partir da posição padrão 20px
(ou seja, de cima 20px
).
3.2 valor absoluto da propriedade
absolute
Indica que o deslocamento é relativo ao elemento pai (geralmente o elemento pai), ou seja, o ponto base de posicionamento é o elemento pai.
Tem uma limitação importante: a base de posicionamento (geralmente o elemento pai) não pode ser o static
posicionamento; caso contrário, a base de posicionamento se tornará o elemento raiz de toda a página da web html
. Além disso, absolute
o posicionamento deve corresponder top
, bottom
, left
, right
utilizado com estas quatro propriedades.
/ * HTML代码如下 <div id = "pai"> <div id = "filho"> </ div> </ div> * / #father { positon : parente ; } #son { posição : absoluta ; superior : 20 px ; }
No código acima, o elemento pai está se relative
posicionando e o elemento filho está se absolute
posicionando; portanto, o ponto base de posicionamento do elemento filho é o elemento pai, que é deslocado para baixo em relação à parte superior do elemento pai 20px
. Se o elemento pai estiver static
posicionado, o elemento filho no exemplo acima será deslocado para baixo na parte superior da página 20px
.
Observe que o absolute
elemento posicionado será ignorado pelo "fluxo de página normal", ou seja, no "fluxo de página normal", o espaço ocupado pelo elemento é zero e os elementos circundantes não são afetados.
3.3 valor do atributo fixo
fixed
Indica que o deslocamento é relativo à janela de visualização (janela de visualização, janela do navegador), ou seja, o ponto base de posicionamento é a janela do navegador. Isso faz com que a posição do elemento não seja alterada à medida que a página rola, como se estivesse fixada na página.
Se é com top
, bottom
, left
, right
usar esses quatro atributos em conjunto, representa a posição inicial do elemento é calculado com base na janela, caso contrário, a posição padrão é a posição inicial do elemento.
div { posição : fixa ; topo : 0 ; }
No código acima, o div
elemento está sempre na parte superior da janela de exibição e não muda à medida que a página rola.
Quatro, valor do atributo pegajoso
sticky
Com os primeiros quatro valores não são o mesmo atributo, que irá gerar um efeito dinâmico, como relative
e fixed
combinação: por algum tempo é relative
posicionado (ponto de auto-posicionamento, é a posição do defeito), quando o outro torna-se automática fixed
de posicionamento (ponto de posicionamento é a janela de visualização).
Portanto, pode formar um efeito de "fixação dinâmica". Por exemplo, a barra de ferramentas de pesquisa de uma página da Web está inicialmente no local padrão ( relative
posicionamento) quando é carregada .
Quando a página rola para baixo, a barra de ferramentas se torna uma posição fixa, permanecendo sempre no início da página ( fixed
posicionamento).
Quando a página voltar à sua posição original novamente, a barra de ferramentas retornará à posição padrão.
sticky
A premissa é para ter efeito, deve ser usado com top
, bottom
, left
, right
em conjunto, estes quatro atributos, não pode ser omitido, caso contrário, idêntica à relative
posição, não produz efeito "estabilização dinâmica". O motivo é que esses quatro atributos são usados para definir a "distância de deslocamento", que o navegador considera como sticky
o limite efetivo.
Sua regra específica é que, quando a página rola e o elemento pai começa a deixar a janela de visualização (ou seja, parcialmente invisível), desde que sticky
a distância até o elemento atinja o limite efetivo, o relative
posicionamento muda automaticamente para o fixed
posicionamento; quando o elemento pai sai completamente da janela de visualização (ou seja, completamente Invisível), o fixed
posicionamento volta automaticamente ao relative
posicionamento.
Por favor, veja o código de exemplo abaixo. (Observe que todos os navegadores, exceto o IE, que foram eliminados, atualmente são suportados sticky
. No entanto, o navegador Safari precisa ser prefixado com um navegador -webkit-
.)
#toolbar { position : -webkit-sticky ; / * navegador safari * / position : sticky ; / * outros navegadores * / top : 20px ; }
No código acima, quando a página rola para baixo, #toolbar
o elemento pai começa a sair da janela de visualização. Depois que #toolbar
a distância entre a parte superior da janela de visualização e o 20px
limite for menor que (o limite), #toolbar
ele será automaticamente fixed
posicionado para manter 20px
a distância da parte superior da janela de visualização .
A página continua a rolar para baixo, o elemento pai sai completamente da janela de exibição (ou seja, todo o elemento pai é completamente invisível) e #toolbar
retorna ao relative
posicionamento.
Aplicação cinco, pegajosa
sticky
O posicionamento pode obter alguns efeitos muito úteis. Além do efeito "fixação dinâmica" mencionado acima, aqui estão mais dois.
5.1 Efeito de empilhamento
Empilhamento significa que, quando a página rola, os elementos abaixo cobrem os elementos acima. A seguir, é apresentado um exemplo de pilha de figuras: A figura abaixo irá rolar com a página, cobrindo a figura acima (consulte a demonstração ).
O código HTML é apenas algumas fotos.
< div > < img src = "pic1.jpg" > </ div > < div > < img src = "pic2.jpg" > </ div > < div > < img src = "pic3.jpg" > </ div >
O código CSS é extremamente simples, contanto que duas linhas.
div { posição : pegajosa ; topo : 0 ; }
Seu princípio é que, quando a página rolar para baixo, cada figura se tornará um fixed
posicionamento, resultando na próxima figura sobrepondo-se à figura anterior. Uma explicação detalhada pode ser encontrada aqui .
5.2 Bloqueio do cabeçalho da tabela
Ao rolar uma tabela grande, o cabeçalho da tabela é sempre fixo e também pode ser sticky
implementado (consulte a demonstração ).
O código CSS também é muito simples.
th { posição : pegajosa ; topo : 0 ; }
Deve-se notar que ele sticky
deve ser definido no <th>
elemento, não no elemento <thead>
e <tr>
, porque esses dois elementos não estão relative
posicionados, portanto não há sticky
efeito. Uma explicação detalhada pode ser encontrada aqui .