gpt4 book ai didi

javascript - 嵌套的 Accordion 没有正确扩展javascript

转载 作者:行者123 更新时间:2023-11-28 01:19:48 27 4
gpt4 key购买 nike

我使用 HTML/CSS 和 javascript 创建了一个嵌套的 Accordion 。我有多个主要 Accordion ,每个 Accordion 有 2 个子 Accordion 。我的预期结果是扩展子 Accordion 并让下一个主 Accordion 向下移动,但实际结果是主 Accordion 没有向下移动并且子 Accordion 没有正确扩展。

如果您运行我的 fiddle 示例,单击第一个子 Accordion 会下推第二个子 Accordion 但不会插入 Main#2,并且第二个子 Accordion 不会在 Main#1 或 Main# 上展开2.

如果有人能帮我指明正确的方向,我将不胜感激!谢谢!

Link to fiddle

HTML:

<div class="collapsible">
<h3><strong>Main#1</strong></h3>
</div>
<div class="content">
<div class="collapsible">
<h4>Sub#1</h4>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
</div>
<div class="collapsible">
<h4>Sub#2</h4>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
</div>
</div>

<div class="collapsible">
<h3><strong>Main#2</strong></h3>
</div>
<div class="content">
<div class="collapsible">
<h4>Sub#1</h4>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
</div>
<div class="collapsible">
<h4>Sub#2</h4>
</div>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
</div>
</div>

CSS:

.collapsible {
background-color: white;
color: black;
cursor: pointer;
padding: 1vw;
width:97%;
height: 60px;
max-height: 100%;
margin: 5px 10px 5px 10px;
border: 2px solid black;
text-align: left;
outline: none;
font-size: 25px;
}

.content {
padding: 0 18px;
max-height: 0;
overflow: hidden;
background-color: white;
transition: max-height 0.2s ease-out;
}

h3{
display:inline-block;
vertical-align: middle;
}

h4{
display:inline-block;
vertical-align: middle;
font-size: 22px;
}

Javascript:

$(function() {
var coll = document.getElementsByClassName("collapsible");

//setting buttons of class 'collapsible' to extend on click
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function () {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = content.scrollHeight + "px";
}
});
}
});

最佳答案

我对您的代码进行了一些更改。

我将这部分添加到您的 CSS 中:

.collapsible ~ .content{
height: 0px;
}

.collapsible.active + .content{
height: 100%;
}

评论“最大高度”行:

.content {
padding: 0 18px;
overflow: hidden;
/*max-height: 0;*/
background-color: white;
transition: max-height 0.2s ease-out;
}

并简化 JS:

$(function() {
var coll = document.getElementsByClassName("collapsible");

//setting buttons of class 'collapsible' to extend on click
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function () {
this.classList.toggle("active");
});
}
});

在这里您可以检查更改: https://jsfiddle.net/xpvt214o/501924/

有了这个,隐藏和显示由 CSS 控制。

希望对你有帮助。

关于javascript - 嵌套的 Accordion 没有正确扩展javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51563640/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com