Вы устанавливаете свойство max-height
для класса .panel
, и вы пытаетесь установить display:block
или none
с помощью javascript. Вы должны установить maxHeight
с помощью scrollHeight
из * 1007.* или используйте display:none
внутри класса .panel
вместо свойства max-height
.
Свойство Element.scrollHeight
только для чтения является измерениемвысота содержимого элемента, включая содержимое, не видимое на экране из-за переполнения.
См. демонстрацию ниже
document.addEventListener("DOMContentLoaded", function() {
var acc = document.getElementsByClassName("accordion");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
/* Toggle between adding and removing the "active" class,
to highlight the button that controls the panel */
this.classList.toggle("active");
/* Toggle between hiding and showing the active panel */
var panel = this.nextElementSibling; //.classList.toggle('active');
if (panel.style.maxHeight == "") {
panel.style.maxHeight = panel.scrollHeight + "px";
} else {
panel.style.maxHeight = "";
}
});
}
});
/* --- Accordion Menu Buttons --- */
.accordion {
background-color: #A4C4E9 !important;
color: #000;
cursor: pointer;
width: 75%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
transition: 0.4s;
}
.accordion:hover {
background-color: #999 !important;
}
.panel {
padding: 0 18px;
background-color: white;
max-height: 0;
width: 75%;
overflow: hidden;
transition: max-height 0.2s ease-out;
}
.panel.active {
max-height: 100%;
}
.active,
.accordion:hover {
background-color: #ccc;
}
<button class="accordion">Section 1</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button class="accordion">Section 1</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button class="accordion">Section 1</button>
<div class="panel">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>