使用JavaScript展开/隐藏可折叠

前端之家收集整理的这篇文章主要介绍了使用JavaScript展开/隐藏可折叠 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想实现可扩展菜单.仅应扩展一个标题.当用户单击另一个时,以前的内容
展开的标题应隐藏.我使用过w3schools的代码,但是我不知道如何自动隐藏以前的标题.

  1. var coll = document.getElementsByClassName("collapsible");
  2. var i;
  3. for (i = 0; i < coll.length; i++) {
  4. coll[i].addEventListener("click",function() {
  5. this.classList.toggle("active");
  6. var content = this.nextElementSibling;
  7. if (content.style.display === "block") {
  8. content.style.display = "none";
  9. } else {
  10. content.style.display = "block";
  11. }
  12. });
  13. }
  1. <h2>Collapsibles</h2>
  2. <p>A Collapsible:</p>
  3. <button class="collapsible">Open Collapsible</button>
  4. <div class="content">
  5. <p>text</p>
  6. </div>
  7. <p>Collapsible Set:</p>
  8. <button class="collapsible">Open Section 1</button>
  9. <div class="content">
  10. <p>text</p>
  11. </div>
  12. <button class="collapsible">Open Section 2</button>
  13. <div class="content">
  14. <p>text.</p>
  15. </div>
  16. <button class="collapsible">Open Section 3</button>
  17. <div class="content">
  18. <p>text</p>
  19. </div>
最佳答案
只需通过JS点击即可折叠即可折叠:

  1. var coll = document.getElementsByClassName("collapsible");
  2. var i;
  3. for (i = 0; i < coll.length; i++) {
  4. coll[i].addEventListener("click",function() {
  5. var content = this.nextElementSibling;
  6. if (this.classList.contains("active")) {
  7. content.style.opacity = 0;
  8. } else {
  9. if(node=document.querySelector(".collapsible.active")){
  10. node.classList.toggle("active",false);
  11. node.nextElementSibling.style.opacity = 0;
  12. }
  13. content.style.opacity = 1;
  14. }
  15. this.classList.toggle("active");
  16. });
  17. }
  1. .content{
  2. opacity:0;
  3. transition:opacity 0.5s;
  4. }
  1. <h2>Collapsibles</h2>
  2. <p>A Collapsible:</p>
  3. <button class="collapsible">Open Collapsible</button>
  4. <div class="content">
  5. <p>text</p>
  6. </div>
  7. <p>Collapsible Set:</p>
  8. <button class="collapsible">Open Section 1</button>
  9. <div class="content">
  10. <p>text1</p>
  11. </div>
  12. <button class="collapsible">Open Section 2</button>
  13. <div class="content">
  14. <p>text2</p>
  15. </div>
  16. <button class="collapsible">Open Section 3</button>
  17. <div class="content">
  18. <p>text3</p>
  19. </div>

或者,要与高度配合使用,您需要添加overflow-y:hidden以完全隐藏它:

  1. var coll = document.getElementsByClassName("collapsible");
  2. for (i = 0; i < coll.length; i++) {
  3. coll[i].addEventListener("click",function() {
  4. console.trace()
  5. debugger
  6. var content = this.nextElementSibling;
  7. if (this.classList.contains("active")) {
  8. content.style.height = 0;
  9. } else {
  10. if(node=document.querySelector(".collapsible.active")){
  11. node.classList.toggle("active",false);
  12. node.nextElementSibling.style.height = 0;
  13. }
  14. content.style.height = content.scrollHeight+"px";
  15. }
  16. this.classList.toggle("active");
  17. });
  18. }
  1. .content{
  2. height:0;
  3. transition:height 0.5s;
  4. overflow-y:hidden;
  5. }
  1. <h2>Collapsibles</h2>
  2. <p>A Collapsible:</p>
  3. <button class="collapsible">Open Collapsible</button>
  4. <div class="content">
  5. <p>text1</p>
  6. </div>
  7. <p>Collapsible Set:</p>
  8. <button class="collapsible">Open Section 1</button>
  9. <div class="content">
  10. <p>text1</p>
  11. </div>
  12. <button class="collapsible">Open Section 2</button>
  13. <div class="content">
  14. <p>text2</p>
  15. </div>
  16. <button class="collapsible">Open Section 3</button>
  17. <div class="content">
  18. <p>text3</p>
  19. </div>

猜你在找的HTML相关文章