` Chaque fois que je développe un pliable imbriqué, la visibilité de son parent n'est pas calculée correctement. Certains contenus imbriqués sont absents de l'écran
Voici le code html et le code js pour gérer la hauteur de défilement
// Get all collapsible buttons const collapsibles = document.getElementsByClassName('collapsible'); // Add click event listener for each collapsible for (let i = 0; i < collapsibles.length; i++) { collapsibles[i].addEventListener('click', function() { this.classList.toggle('active'); const content = this.nextElementSibling; if (content.style.maxHeight) { content.style.maxHeight = null; } else { content.style.maxHeight = content.scrollHeight + 'px'; } // Get all nested collapsible buttons within this collapsible const nestedCollapsibles = content.getElementsByClassName('nested-collapsible'); // Loop through nested collapsibles and expand or collapse them accordingly for (let j = 0; j < nestedCollapsibles.length; j++) { const nestedContent = nestedCollapsibles[j].nextElementSibling; if (this.classList.contains('active')) { if (!nestedContent.style.maxHeight) { nestedContent.style.maxHeight = nestedContent.scrollHeight + 'px'; content.style.maxHeight = (parseInt(content.style.maxHeight) + nestedContent.scrollHeight) + 'px'; // Add nested collapsible's scroll height to parent collapsible's scroll height } else { nestedContent.style.maxHeight = null; content.style.maxHeight = (parseInt(content.style.maxHeight) - nestedContent.scrollHeight) + 'px'; // Subtract nested collapsible's scroll height from parent collapsible's scroll height } } } }); }
.active { color:blue; }
<div id="HotLikeMiami"> <div class="HLM"> <div class="HLMRow"> <div class="HLMTitle"> <h1 class="sub-title">Fantastic League</h1> </div> <div class="HLMImg"> <img src="fantasticLeague.png"> </div> <div class="HLMDetails"> <p>A 2D Top Down Shooter game which heavily focuses on Enemy AI. I have made an attempt to build this project from ground up. I have used SFML for rendering shapes and textures, the rest is made from scratch. The project involves the integration of complex enemy AI. A simple Data-Oriented Design approach has been followed in this project for handling different events and messages by the enemies. </p> </div> <div class="MyContibution"> <button class="collapsible">My Contribution</button> <div class="ContributionContent"> <p>Got a lot of contribution</p> <button class="collapsible nested-collapsible">My Contribution</button> <div class="ContributionContent"> <p>1. This process involves the development and integration of states like Game Menu, Splash Screen, InGame, Game Over etc states. These states are fetched with delta time which is calculated from the Game Loop. 2. This stage also includes the development of Asset Manager, Input Manager etc</p> </div> <button class="collapsible nested-collapsible">My Contribution</button> <div class="ContributionContent"> <p>1. This process involves the development and integration of states like Game Menu, Splash Screen, InGame, Game Over etc states. These states are fetched with delta time which is calculated from the Game Loop. 2. This stage also includes the development of Asset Manager, Input Manager etc</p> </div> <button class="collapsible nested-collapsible">My Contribution</button> <div class="ContributionContent"> <p>1. This process involves the development and integration of states like Game Menu, Splash Screen, InGame, Game Over etc states. These states are fetched with delta time which is calculated from the Game Loop. 2. This stage also includes the development of Asset Manager, Input Manager etc</p> </div> </div> </div> </div> </div> </div>``` </kbd>
J'ai besoin d'aide pour les calculs et ce qui affecte la visibilité
Je veux que tous les nids soient indépendants et qu'ils augmentent la hauteur de visibilité du parent à chaque fois qu'ils sont agrandis Ici la dernière nidification est coupée :
J'ai modifié votre code pour qu'il fonctionne correctement avec des hauteurs dynamiques et une réactivité.
Vérifiez d’abord si vous agrandissez ou réduisez. Nous pouvons l'obtenir via
classList.toggle
的结果来弄清楚这一点,如果添加了类,则为true
,如果删除,则为false
。 p>Mon altitude fluctue avec chacun
ContributionContent
内部添加了一个包装器。该包装器将负责计算内部内容的总高度。这是必需的,因为ContributionContent
.Soyez respectueux lors de la surveillance
transitionend
事件,将最大高度设置为none
。仅当手风琴展开时才设置高度。关闭0px
.Étant donné que la hauteur maximale est définie sur
none
lorsqu'elle est développée, nous devons utiliser Double Request Animation Frame (Double RAF) pour définir d'abord la hauteur, puis passer à0px une fois fermé. Il s'agit d'une technique (hacky) qui effectue des tâches après le rendu. Voir cet article à propos du Double RAF.
En conclusion. W3Schools propose de nombreux exemples intéressants, mais ils sont notoirement obsolètes. Lorsque vous recherchez des exemples, découvrez quel âge ils ont et s’ils utilisent les dernières pratiques.