CSS高度不定展开收起优化方案


 

在 CSS 中实现高度不定的展开收起动画时,可以通过以下方案避免卡顿:

最佳方案:CSS Grid 的 grid-template-rows 过渡

利用 CSS Grid 布局的特性,通过 fr 单位实现平滑过渡,避免直接操作 height 属性。

 1 <div class="container">
 2   <div class="content">不定高度的内容...</div>
 3 </div>
 4 <button onclick="toggle()">切换</button>
 5 
 6 <style>
 7 .container {
 8   display: grid;
 9   grid-template-rows: 0fr; /* 初始收起状态 */
10   transition: grid-template-rows 0.3s ease-out;
11   overflow: hidden; /* 隐藏溢出内容 */
12 }
13 
14 .container > .content {
15   min-height: 0; /* 关键!允许内容收缩 */
16 }
17 
18 .container.expanded {
19   grid-template-rows: 1fr; /* 展开状态 */
20 }
21 </style>
22 
23 <script>
24 function toggle() {
25   document.querySelector('.container').classList.toggle('expanded');
26 }
27 </script>

 

posted @ 2025-04-03 14:53  地yu荒冢  阅读(124)  评论(0)    收藏  举报