针对业务中遇见的折叠/展开动画,需要实现高度的过渡动画。但是在不知道内容的具体高度,样式给 auto 动画是不生效的,在不用 js 控制的情况,grid来实现高度的过度动画。

# 使用 Grid 布局

<!-- 使用 Grid,需要给内容在包裹一层标签 -->
<!-- gird 样式添加在子元素上 -->
<div class="container">
  <h1>hover me</h1>
  <div class="content">
    <div>
      <div class="item">内容1</div>
      <div class="item">内容2</div>
      <div class="item">内容3</div>
    </div>
  </div>
</div>

# CSS 样式

.container {
  width: 300px;
  background-color: #1890ff;
}
.content {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 500ms;
}
.content > div {
  /*使子元素动画与父元素保持一致*/
  grid-row: 1 / span 2;
  /*overflow也设置给子元素*/
  overflow: hidden;
}
.container:hover .content {
  grid-template-rows: 1fr;
}