MOTION HUB

平滑折叠

Smooth Accordion
#accordion-smooth · 02/72
AUTO · 自动演示

参数调改

PLAYGROUND
展开时长--dur_ms
1501000
ms
强调色--accent
标题颜色--text_color
正文颜色--muted_color
缓动曲线--ease

实现要点

NOTES
  1. 01

    展开核心是 grid-template-rows: 0fr→1fr 的过渡:面板为单行 grid,fr 可插值,行高始终贴合内容真实高度,无需 max-height magic number;Chrome/Edge 107+ 支持。

  2. 02

    内层必须 overflow:hidden,且 padding 放在内层元素上而不是面板本身——否则 0fr 收起后残留 padding 高度、面板关不严。

  3. 03

    原生按钮承载 aria-expanded,配相邻选择器 [aria-expanded='true'] + .acc-panel 驱动展开,键盘操作天然可用;演示页用 .open 类做初始展开态,二者写法并存展示。

  4. 04

    图标是加号伪元素对:竖杆 rotate(90deg) 后与横杆重叠成减号,颜色同时切到强调色,全部只动 transform 与颜色。

  5. 05

    多个面板可同时展开(无互斥逻辑),如需手风琴互斥由宿主 JS 切换 aria-expanded 即可,动画层零改动。

  6. 06

    reduced-motion:过渡压到 0.01ms,面板展开收起变为瞬时切换。

源代码

SOURCE

加载源代码…