纯CSS手风琴用:checked + ~控制折叠,因height无法对auto动画,推荐用max-height模拟;需确保label正确绑定checkbox,兄弟选择器~或+须精准匹配元素顺序,移动端需处理iOS点击延迟。
用
+
选择器控制折叠,但高度不能直接动画
纯 CSS 手风琴必须依赖复选框的
状态和兄弟选择器(
或
),这是最轻量、无需 JS 的方案。但关键限制是:
无法对
做过渡动画——浏览器不知道目标高度是多少。
实操建议:
把内容容器设为
,初始
,展开时设为具体像素值(如
)或使用
模拟(推荐)
用
替代
:设一个足够大的值(如
),确保内容能完全展开;收起时设为
过渡只写
,不要加
或
—— 多余属性会干扰动画节奏
注意:若内容高度差异大,固定
值可能在短内容上出现“拉伸延迟”,长内容则可能被截断
必须包裹
或显式绑定
点击标题区域没反应?大概率是
和
没正确关联。CSS 折叠依赖复选框状态变化,而状态只能靠用户交互触发 —— 如果
不控制
,
就永远不会变。
常见错误现象:
立即学习
“
前端免费学习笔记(深入)
”;
点击文字无反应,但点中 checkbox 小方框可以 —— 说明
没包住
,也没用
绑定
多个手风琴共用同一个
,导致点一个全开 ——
值重复,浏览器只认第一个
实操建议:
最稳妥写法:
,天然绑定
如果结构不允许嵌套,用
/
:给
设唯一
,
写
别用
或
去 toggle —— 这就绕过了
,CSS 规则失效
兄弟选择器
和
的区别直接影响能否展开
内容区必须是复选框的**后续普通兄弟元素**,才能用
选中;如果中间插了别的标签(比如注释、空格文本节点不影响,但
、
会打断),
就失效。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
使用场景:
:只匹配紧挨着的下一个兄弟,适合「单行标题 + 紧邻内容」结构
:匹配后面所有同级的
,适合一个 checkbox 控制多个区块(少见,慎用)
千万别写成
(后代选择器)—— 这会去子元素里找,而
是平级,完全不生效
性能影响小,但写错等于整个功能挂掉,调试时优先检查选择器路径是否真能命中目标元素。
移动端点击区域小、iOS Safari 对
响应有延迟
iOS Safari 默认会给 checkbox 加一层“点击激活延迟”(约 300ms),导致手风琴点下去卡顿半拍,用户感知明显。这不是 bug,是浏览器为双击缩放留的兼容机制。
实操建议:
给
加
和
,提升点击反馈感
在
里加
,关闭双击缩放后,多数机型会自动取消延迟
如果仍需保留缩放,可用
在
上,明确告诉浏览器“这里只做点击操作”
别依赖
做视觉反馈 —— 移动端 focus 状态不稳定,容易丢失
真正麻烦的是内容高度动态变化(比如加载异步数据后再展开),这时候 CSS 方案就撑不住了,得切到 JS 控制
—— 但那是另一个问题了。
:checked~:checked~+heightautooverflow: hiddenheight: 0height: 200pxmax-heightmax-heightheightmax-height: 500pxmax-height: 0max-height .3s easeheightopacitymax-heightlabelinput[type="checkbox"]forlabelinputlabelinput:checkedlabelinputforidforidforinputid="accordion-1"labelfor="accordion-1"onclickaddEventListener:checked~+~divspan~input + .contentinput ~ .content.contentinput .content.content:checkedlabelcursor: pointer-webkit-tap-highlight-color: transparenttouch-action: manipulationlabel:focusscrollHeight