Ваша максимальная высота на панели div является проблемой.Пожалуйста, попробуйте рассчитать высоту всех открытых аккордеонов после изменения размера окна.Это должно решить вашу проблему.Вам просто нужно запустить код, который вычисляет высоту в указанном выше коде, в функции window.resize для всех открытых аккордеонов.
window.addEventListener("resize", recalculate(function(e){
for (i = 0; i < acc.length; i++) {
var panel = acc[i].nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = panel.scrollHeight + "px";
}
}
});
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
this.classList.toggle("activeAccordion");
var panel = this.nextElementSibling;
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
Или вы также можете сделать следующее.
Iдумаю, что вы должны remove this part
вашего js
if (panel.style.maxHeight){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
Вместо этого напишите это
if (panel.style.display === "block"){
panel.style.display = null;
} else {
panel.style.display = "block";
}
И добавьте этот CSS
#faq .panel {
display: none;
}
Но его недостатком является то, что ваша анимацияэффекты не будут отображаться, так что вы можете сделать это.
Или вы также можете сделать это
Измените свой код максимальной высоты следующим образом:
if (panel.style.maxHeight === "inherit"){
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = "inherit";
}