固定 max-height: 500px 虽然简单,但内容变化后可能不够高,
或者动画时间与真实内容高度不匹配。本实验使用 Grid 的
grid-template-rows: 0fr → 1fr 来完成展开。
CSS DEVELOPMENT LAB · 09
Accordion 手风琴
FAQ、产品参数、服务流程、分类导航都经常使用手风琴。 本实验重点研究:不用计算内容高度,如何让展开动画稳定、结构清晰、手机端也好用。
CORE DEMO
一次只展开一个项目
默认展开第一项。点击其他标题后,当前项打开,其余项自动关闭。 再次点击当前项不会折叠,确保始终至少保留一个展开状态。
CSS
负责展开高度、箭头旋转、边框与动画
JavaScript
只负责切换
.is-open 与 ARIA 状态
KEY TECHNIQUE
用 Grid 做“自动高度”的展开动画
.accordion-panel {
display: grid;
grid-template-rows: 0fr;
}
.accordion-item.is-open
.accordion-panel {
grid-template-rows: 1fr;
}
.accordion-panel-inner {
overflow: hidden;
}
COMMON USE CASES
最常见的应用场景
帮助中心、售前问题、售后说明。
产品参数、安装说明、下载资料。
服务流程、步骤说明、项目阶段。
手机分类、左侧目录、多级菜单。