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>
浙公网安备 33010602011771号