针对业务中遇见的折叠/展开动画,需要实现高度的过渡动画。但是在不知道内容的具体高度,样式给 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;
}
← 多文字省略展开收起效果 CSS效果 →