Transition douce de hauteurs dynamiques

CSSCSSBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer la manière de faire transiter doucement la hauteur d'un élément de 0 à auto lorsque sa hauteur est inconnue. Cette technique est utile pour créer des menus déroulants, des accordéons et autres contenus animés. En utilisant les propriétés CSS transition, max-height et overflow, ainsi que JavaScript pour définir dynamiquement la valeur de la hauteur, nous pouvons créer une expérience utilisateur fluide et visuellement attrayante.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL css(("CSS")) -.-> css/BasicConceptsGroup(["Basic Concepts"]) css(("CSS")) -.-> css/CoreLayoutGroup(["Core Layout"]) css(("CSS")) -.-> css/IntermediateStylingGroup(["Intermediate Styling"]) css(("CSS")) -.-> css/ResponsiveandAdaptiveDesignGroup(["Responsive and Adaptive Design"]) css(("CSS")) -.-> css/DynamicStylingGroup(["Dynamic Styling"]) css(("CSS")) -.-> css/CSSPreprocessorsGroup(["CSS Preprocessors"]) css/BasicConceptsGroup -.-> css/selectors("Selectors") css/CoreLayoutGroup -.-> css/width_and_height("Width and Height") css/IntermediateStylingGroup -.-> css/pseudo_classes("Pseudo-classes") css/ResponsiveandAdaptiveDesignGroup -.-> css/mobile_first_design("Mobile First Design") css/DynamicStylingGroup -.-> css/transitions("Transitions") css/CSSPreprocessorsGroup -.-> css/variables("Variables") css/CSSPreprocessorsGroup -.-> css/nesting("Nesting") subgraph Lab Skills css/selectors -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/width_and_height -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/pseudo_classes -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/mobile_first_design -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/transitions -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/variables -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} css/nesting -.-> lab-35207{{"Transition douce de hauteurs dynamiques"}} end

Transition de hauteur

index.html et style.css ont déjà été fournis dans la machine virtuelle.

Ce fragment de code effectue une transition de la hauteur d'un élément de 0 à auto lorsque sa hauteur est inconnue en effectuant les étapes suivantes :

  • Utilisez la propriété transition pour spécifier que les modifications de max-height doivent être animées sur une durée de 0,3 s.
  • Utilisez la propriété overflow définie sur hidden pour empêcher le contenu de l'élément caché de déborder de son conteneur.
  • Utilisez la propriété max-height pour spécifier une hauteur initiale de 0.
  • Utilisez le pseudo-classe :hover pour changer la max-height à la valeur de la variable --max-height définie par JavaScript.
  • Utilisez la propriété Element.scrollHeight et la méthode CSSStyleDeclaration.setProperty() pour définir la valeur de --max-height à la hauteur actuelle de l'élément.
  • Remarque : Cette approche provoque un reflow à chaque trame d'animation, ce qui peut entraîner un ralentissement lorsqu'il y a un grand nombre d'éléments en dessous de l'élément en transition.
<div class="trigger">
  Survolez-moi pour voir une transition de hauteur.
  <div class="el">Contenu supplémentaire</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");

Veuillez cliquer sur 'Go Live' dans le coin inférieur droit pour exécuter le service web sur le port 8080. Ensuite, vous pouvez actualiser l'onglet Web 8080 pour prévisualiser la page web.

Sommaire

Félicitations ! Vous avez terminé le laboratoire de Transition de hauteur. Vous pouvez pratiquer d'autres laboratoires dans LabEx pour améliorer vos compétences.