I've got a div with the ID testimonials that has a height of auto. In the div are a number of section's that vary in height. I am currently running a script that only shows one section at a time, and animates the opacity. I want to find a solution that allows for #testimonials to animate the height when a new section is displayed.
HTML Structure
<div id="testimonials">
<section>
<p>This is the first quote.</p>
</section>
<section>
<p>This is the second quote. It is taller than the previous section.</p>
</section>
<section>
<p>This is the third quote. It is even taller than the previous section two sections.</p>
</section>
</div>
jQuery
(function() {
var testimonials = $("#testimonials section");
var testimonialIndex = -1;
function showNextTestimonial() {
++testimonialIndex;
testimonials.eq(testimonialIndex % testimonials.length)
.fadeIn(2000)
.delay(2000)
.fadeOut(2000, showNextTestimonial);
}
showNextTestimonial();
})();
You can see my CodePen for a working example.
What I've Tried
Trying to use max-height to animate the height is impossible since I'm not using :hover, and that seems to be the only way to make it work. I also can't use transform: scale() for the same reason that it relies on :hover. The solutions I am finding either seem to rely on :hover, only fire on pageload, window.onresize, onclick, or something else that doesn't update when the visible section changes.
How do I animate the height of a div that's content is being changed out every 6 seconds like above?