<button>Mostrar</button>
<section>
<h2>Título</h2>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pellentesque risus eu tempor cursus. Curabitur eleifend turpis eget rutrum interdum. Fusce porttitor ex massa, vel eleifend nisl ornare non. Maecenas luctus erat nulla. Phasellus gravida accumsan odio, id sagittis quam ultricies sed. Duis volutpat turpis nibh. Etiam ornare eros eu mollis faucibus.
</div>
</section>
section .content {
height: 0;
overflow: hidden;
transition: height 0.5s;
}
const
button = document.querySelector("button"),
content = document.querySelector(".content");
button.addEventListener("click", () => {
if (content.style.height === "0px" || !content.style.height) {
content.style.height = "auto"; // Atribui height: auto ao elemento
const rect = content.getBoundingClientRect(); // Calcula suas dimensões
content.style.height = "0px"; // Rapidamente atribui height: 0px novamente, para iniciar a animação
getComputedStyle(content).height; // Truque para que a animação funcione
content.style.height = `${rect.height}px`; // Faz a transição para a altura calculada
} else content.style.height = "0px";
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.