How to make transition height from 0 to auto using CSS?

Making a transition height from 0 to "auto" is a way to smoothly animate an element's height as it changes to fit its content. In web development, creating smooth and elegant transitions can make a website more attractive and provide a better user experience. However, creating a transition from a height of 0 to "auto" can be a bit tricky since CSS cannot directly animate to the "auto" value.

Syntax

transition: property duration timing-function delay;

Where property is the CSS property to animate, duration is the time length, timing-function specifies the transition pace, and delay is optional wait time before starting.

The Challenge

CSS transitions cannot animate directly to "auto" values because the browser needs specific numeric values to calculate the animation. The solution is to use max-height instead of height and set a value large enough to accommodate the content.

Method 1: Using Checkbox Toggle

This method uses a checkbox to toggle the element's visibility with smooth height animation

<!DOCTYPE html>
<html>
<head>
<style>
    body { 
        text-align: center; 
        font-family: Arial, sans-serif;
    }
    
    .element {
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.5s ease-in-out;
        background-color: #f0f8ff;
        border: 2px solid #4CAF50;
        margin: 20px auto;
        width: 300px;
        border-radius: 5px;
    }
    
    input[type="checkbox"]:checked ~ .element {
        max-height: 200px;
    }
    
    .element p { 
        margin: 15px;
        color: #333;
    }
    
    label {
        cursor: pointer;
        background-color: #4CAF50;
        color: white;
        padding: 10px 20px;
        border-radius: 5px;
        display: inline-block;
        margin: 10px;
    }
</style>
</head>
<body>
    <h3>Transitioning Height 0 to Auto</h3>
    <input type="checkbox" id="toggle">
    <label for="toggle">Toggle Element</label>
    <div class="element">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
        <p>Nulla faucibus nisi nec ullamcorper finibus.</p>
    </div>
</body>
</html>
A toggle button appears. When clicked, a bordered box smoothly expands from height 0 to show the content with a smooth animation effect.

Method 2: Using Hover Effect

This approach triggers the height animation on hover

<!DOCTYPE html>
<html>
<head>
<style>
    body { 
        text-align: center; 
        font-family: Arial, sans-serif;
        padding: 20px;
    }
    
    .container {
        display: inline-block;
        margin: 20px;
    }
    
    .trigger {
        background-color: #2196F3;
        color: white;
        padding: 15px 25px;
        border-radius: 5px;
        cursor: pointer;
        font-weight: bold;
    }
    
    .expandable {
        max-height: 0;
        width: 250px;
        margin: 10px auto;
        transition: max-height 0.8s ease-out;
        overflow: hidden;
        background-color: #e3f2fd;
        border: 1px solid #2196F3;
        border-radius: 5px;
    }
    
    .container:hover .expandable {
        max-height: 300px;
        transition: max-height 0.6s ease-in;
    }
    
    .expandable p {
        padding: 15px;
        margin: 0;
        color: #1976D2;
    }
</style>
</head>
<body>
    <h3>Hover to Expand Content</h3>
    <div class="container">
        <div class="trigger">Hover on me to expand!</div>
        <div class="expandable">
            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>
            <p>Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.</p>
        </div>
    </div>
</body>
</html>
A blue button appears. When hovered, a content box smoothly expands below it, revealing text content with a smooth height transition animation.

Key Points

  • Use max-height instead of height for smoother animations
  • Set overflow: hidden to hide content when collapsed
  • Choose a max-height value larger than your content's actual height
  • Different timing functions create different animation effects

Conclusion

Creating smooth height transitions from 0 to auto requires using max-height with a sufficiently large value. This technique provides an elegant way to show and hide content with smooth animations, greatly enhancing user experience on your website.

Updated on: 2026-03-15T16:24:47+05:30

7K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements