https://jsfiddle.net/wwx100f8/69/
我正在努力创造一种可扩展/可折叠的手风琴来保存餐厅的食物选择,一种类似于Just-Eat或Hungry House的数字菜单。
使用W3Schools,我尝试使用Animated Accordion来制作这个数字食物菜单。 https://www.w3schools.com/howto/howto_js_accordion.asp
正如您在我的代码中所看到的,我试图将<button class="accordion">
“嵌套”在另一个代码中。
然而,嵌套的手风琴一旦消耗,就不会扩展它的父容器。 这导致儿童手风琴的内容被隐藏或中断。
在打开儿童手风琴后折叠父手风琴解决了这个问题。但这对用户来说不方便。
我想我需要一些方法来设置css,以便手风琴容器适合儿童内容。它们似乎是固定的,直到被点击。
我也对任何关于我如何实现这个'数字菜单'的建议持开放态度。
https://jsfiddle.net/wwx100f8/69/
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
.accordion {
background-color: #eee;
color: #444;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
transition: 0.4s;
}
.active, .accordion:hover {
background-color: #ccc;
}
.accordion:after {
content: '\002B';
color: #777;
font-weight: bold;
float: right;
margin-left: 5px;
}
.active:after {
content: "\2212";
}
.panel {
padding: 0 18px;
background-color: white;
max-height: 0;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
<button class="accordion">Section 1</button>
<div class="panel">
<p>The Text in Section 1</p>
<button class="accordion">Section 2</button>
<div class="panel">
<p>The Text in Section 2</p>
</div>
</div>
答案 0 :(得分:2)
而不是为max-height
的{{1}}设置绝对值,请尝试将div.panel
设置为max-height
,like this。
然而,这样做会破坏你的动画,你可以切换到使用jquery进行动画(initial
/ .slideUp
或.slideToggle
),这不会出现这个问题,或者尝试使用计时器的一些技巧:https://jsfiddle.net/wwx100f8/80/