Introdução
Neste laboratório, exploraremos como fazer a transição suave da altura de um elemento de 0 para auto quando sua altura é desconhecida. Essa técnica é útil para criar menus suspensos (dropdown menus), acordes (accordions) e outros conteúdos animados. Ao usar as propriedades CSS transition, max-height e overflow, bem como JavaScript para definir dinamicamente o valor da altura, podemos criar uma experiência de usuário perfeita e visualmente atraente.
Transição de Altura (Height Transition)
index.html e style.css já foram fornecidos na VM.
Este trecho de código faz a transição da altura de um elemento de 0 para auto quando sua altura é desconhecida, executando as seguintes etapas:
- Use a propriedade
transitionpara especificar que as mudanças emmax-heightdevem ser transicionadas ao longo de uma duração de0.3s. - Use a propriedade
overflowdefinida comohiddenpara evitar que o conteúdo do elemento oculto transborde seu contêiner. - Use a propriedade
max-heightpara especificar uma altura inicial de0. - Use a pseudo-classe
:hoverpara alterar omax-heightpara o valor da variável--max-heightdefinida por JavaScript. - Use a propriedade
Element.scrollHeighte o métodoCSSStyleDeclaration.setProperty()para definir o valor de--max-heightpara a altura atual do elemento. - Nota: Essa abordagem causa reflow em cada frame de animação, o que pode causar lentidão quando há um grande número de elementos abaixo do elemento em transição.
<div class="trigger">
Passe o mouse sobre mim para ver uma transição de altura.
<div class="el">Conteúdo adicional</div>
</div>
.el {
transition: max-height 0.3s;
overflow: hidden;
max-height: 0;
}
.trigger:hover > .el {
max-height: var(--max-height);
}
let el = document.querySelector(".el");
let height = el.scrollHeight;
el.style.setProperty("--max-height", height + "px");
Por favor, clique em 'Go Live' no canto inferior direito para executar o serviço web na porta 8080. Em seguida, você pode atualizar a aba Web 8080 para visualizar a página web.
Resumo
Parabéns! Você concluiu o laboratório de Transição de Altura (Height Transition). Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.