You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对屏幕阅读器隐藏「展开更多」按钮且保留其对明眼用户的可聚焦性

实现方案

核心思路

将内容拆分为两个独立模块,分别适配屏幕阅读器和普通视觉用户,从根源避免可聚焦元素加aria-hidden的规范冲突。

具体实现步骤

1. 实现仅屏幕阅读器可见的样式类

首先定义通用的.sr-only样式,该类会让元素在视觉上完全隐藏,但不会被屏幕阅读器忽略:

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

2. 编写DOM结构

<!-- 仅对屏幕阅读器开放的完整文本,普通用户不可见 -->
<p class="sr-only">此处放入横幅的完整文本内容,屏幕阅读器会直接朗读全部内容</p>

<!-- 对普通视觉用户开放的内容块,整体对屏幕阅读器隐藏 -->
<div aria-hidden="true">
  <p class="truncated">此处放入截断后的横幅文本...</p>
  <button id="expandBtn">展开更多</button>
</div>

3. 实现普通用户侧的展开交互

按照原有逻辑编写「展开更多」按钮的点击事件即可,比如移除截断样式、切换显示完整文本等,该块整体已对屏幕阅读器隐藏,所有交互都不会影响辅助设备的内容读取。

方案优势

  • 完全符合WAI-ARIA规范:aria-hidden加在非可聚焦的div容器上,规避了可聚焦元素加该属性的兼容性问题
  • 交互逻辑无冲突:按钮依然支持鼠标点击、键盘聚焦操作,普通视觉用户的使用习惯不受影响
  • 屏幕阅读器用户体验最优:无需额外操作即可直接获取完整内容,也不会感知到「展开更多」按钮的存在

注意事项

确保屏幕阅读器专属的完整文本,和视觉侧展开后的完整文本内容完全一致,避免出现信息不对称的问题。

内容的提问来源于stack exchange,提问作者Brendan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:27:01