.wrapper { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.5s ease-out; } .wrapper.is-open { grid-template-rows: 1fr; } .inner { overflow: hidden; } --- <div class="wrapper"> <div class="inner">Expandable content</div> </div>