使用JavaScript展开/隐藏可折叠

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

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

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

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

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

  1. @H_502_7@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. @H_502_7@.content{
  2. height:0;
  3. transition:height 0.5s;
  4. overflow-y:hidden;
  5. }
  1. @H_502_7@<h2>Collapsibles</h2>
  2.  
  3. <p>A Collapsible:</p>
  4. <button class="collapsible">Open Collapsible</button>
  5. <div class="content">
  6. <p>text1</p>
  7. </div>
  8. <p>Collapsible Set:</p>
  9. <button class="collapsible">Open Section 1</button>
  10. <div class="content">
  11. <p>text1</p>
  12. </div>
  13. <button class="collapsible">Open Section 2</button>
  14. <div class="content">
  15. <p>text2</p>
  16. </div>
  17. <button class="collapsible">Open Section 3</button>
  18. <div class="content">
  19. <p>text3</p>
  20. </div>

猜你在找的HTML相关文章