小屏下必须放弃水平tab栏,改用或;强行压缩或换行会导致误触率高、焦点混乱、语义断裂;两者无需JS、兼容键盘与屏幕阅读器,且需严格配对显隐逻辑、同步aria-hidden与tabindex。

小屏下必须放弃水平 tab 栏,改用 或
强行压缩或换行 tab 按钮在手机上几乎不可点——手指误触率高、焦点跳转混乱、语义断裂。真正可行的方案只有两个: 下拉(兼容性最好),或 原生折叠(现代浏览器全支持)。两者都无需 JS 就能工作,且天然适配键盘和屏幕阅读器。
-
必须每个的value与对应面板的id一致,例如对应的必须是第一个子元素,否则屏幕阅读器无法识别控制关系- 别用
flex-wrap: wrap或width: 100%强撑水平排列——这会导致按钮错位、对齐失效、点击区域变窄@media里显隐逻辑必须严格互斥常见错误是只隐藏下拉菜单,却忘了给水平 tab 栏加
display: none,结果小屏同时出现两套控件;或者反过来,大屏残留未收起的浮层。关键在于断点内样式必须成对反转:- 小屏(如
max-width: 767px):.tab-list { display: none; }+.dropdown-menu, .tab-select { display: block; } - 大屏:
.tab-list { display: flex; }+.dropdown-menu, .tab-select { display: none; } - 父容器不能设
overflow: hidden,否则展开选项会被裁剪
面板切换必须同步管理
aria-hidden和tabindex只靠
display: none隐藏非激活面板,会让屏幕阅读器跳过内容、搜索引擎无法索引、JS 获取不到真实高度。可访问性要求必须三者联动:
htmlppt.skill下载把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
- 非激活面板:同时加
style="display: none"、aria-hidden="true"、tabindex="-1" - 激活面板:移除
display: none,设aria-hidden="false",去掉tabindex="-1" -
切换时,用极简 JS 监听change事件来更新这些属性——纯 CSS 无法触发 DOM 属性变更
方案结构容错性极低虽然它号称“无 JS”,但实际对 HTML 结构极其敏感:一旦
、、目标面板之间插入空格、注释或任意其他标签,:checked + ~就会失效。更麻烦的是,它无法响应 URL hash 变化,SPA 中容易失步。-
必须放在最前,必须紧邻其后,中间不能有任何节点 - 隐藏复选框必须用
position: absolute; opacity: 0; pointer-events: none,禁用visibility: hidden或display: none——后者会让它彻底脱离可访问树 - 如果页面需支持前进/后退或分享链接,这个方案基本不可用,得切回
location.hash+ JS
真正难的不是写出来,而是让所有设备、所有输入方式(手指、键盘、语音)、所有加载状态(JS 失败、SSR、首屏)下,tab 状态和面板内容始终一致。多数人卡在 aria 属性没同步,或小屏下忘了关掉大屏的 flex 导航。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










