首页 > 其他分享 >使网页中的内容只对读屏软件可见

使网页中的内容只对读屏软件可见

时间:2025-01-09 22:54:47浏览次数:1  
标签:网页 元素 访问 1px 软件 读屏 隐藏

在构建无障碍网页时,一个重要的考量是如何为使用读屏软件的视障者提供必要的信息,同时避免这些信息干扰到有视力的健视者。 本文将详细讲解怎样在网页中创建仅供读屏软件访问的内容。

正如文章开头所说,在理想情况下,网页内容应该对所有用户保持一致的可访问性。然而,在某些特定场景下,视觉呈现的信息对于视障者来说可能不够明确,或者需要额外的文本解释才能更好地理解。反之,一些为视障者提供的详细说明对于健视者来说可能是冗余甚至干扰的。 因此,我们需要一种技术,能够选择性地向读屏软件用户呈现信息,而对视觉用户保持隐藏。

哪些场景需要仅供读屏软件访问的内容?

例如,一个只有放大镜图标的搜索按钮,对于健视者来说很容易理解其功能。但对于视障者,读屏软件可能只会读出“按钮”,无法明确其用途。此时,我们可以添加一个仅供读屏软件访问的文本标签,如“搜索”,来增强其语义。

再比如,网页上的面包屑导航,通过视觉上的层级结构和位置,健视者可以轻松理解“首页 > 文章 > 当前页面”的含义。但读屏软件线性读取时,可能无法清晰表达这种层级关系。添加一段仅供读屏软件访问的“当前位于:”前缀,可以帮助视障者理解当前位置。

某些操作提示或状态指示,可能通过颜色或小图标来呈现。为了让视障者也能理解,可以添加隐藏的文本说明,例如用红色表示错误时,添加“错误提示”的文本。

“跳过”链接的优化: “跳到主要内容”或“跳过导航”链接对于使用键盘导航的视障者非常重要。但为了不影响视觉设计,可以将其初始隐藏,只在获得焦点时显示,但仍然确保读屏软件可以访问。

重要提示:谨慎使用仅供读屏软件访问的内容

要记住,许多视障用户并非完全失明,他们可能还有部分视力。 因此,我们应该尽量保持视觉内容和读屏软件读取内容的一致性。

不推荐的隐藏内容技术及其原因

在深入了解推荐的技术之前,先给大家讲一下一些不适合用于创建仅供读屏软件访问内容的方法:

display: none 或 visibility: hidden:

这两种 CSS 属性都会彻底隐藏元素,使其从页面布局中移除,并且不会被读屏软件读取。

它们的目标是完全隐藏元素,不针对特定的用户群体。

绝对不能使用这两种属性来创建仅供读屏软件访问的内容。这种办法会使内容对所有用户都不可见,包括视障者。

hidden 属性:

HTML 的 hidden 属性与 display: none 的效果类似,会隐藏元素并使其不被读屏软件读取。

其功能与 display: none 相同,旨在完全移除元素。此外,老旧浏览器如 IE11 可能不支持该属性。

不应使用 hidden 属性来创建仅供读屏软件访问的内容。

width: 0px, height: 0px 或其他 0 像素尺寸调整技术:

将元素的尺寸设置为 0,使其在视觉上不可见。

大多数读屏软件会忽略尺寸为 0 的元素,认为其不包含有效内容。此外,这种做法可能被搜索引擎视为作弊,引来降权。

及其不推荐使用 0 像素尺寸调整技术来隐藏内容。即使使用 font-size: 0 或 line-height: 0 可能会让读屏软件读取,但元素仍然占据页面空间,且不被推荐。

text-indent: -10000px;:

通过设置一个非常大的负文本缩进,将文本移出屏幕可视区域。

读屏软件通常会读取使用 text-indent 隐藏的文本。

如果隐藏的是链接、表单控件等可聚焦元素,健视者通过键盘导航时会聚焦到看不见的元素,造成困惑。如果指想让这些原本可聚焦的表单控件、链接等只能被读屏光标访问到,不能通过tab键/shift+tab访问到,需要设置元素的 tabindex="-1"。

虽然读屏软件可以读取,但对于包含可交互元素的场景,不推荐使用此方法。

推荐的隐藏内容技术:为视障者提供专属信息

绝对定位内容到屏幕外 (.sr-only 类)

这是最常用且推荐的方法。通过创建一个特定的 CSS 类,我们可以将元素定位到屏幕外,使其对健视者不可见,但仍能被读屏软件读取。

.sr-only {
    position: absolute;
    left: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

position: absolute;: 将元素从正常的文档流中移除,使其不影响其他元素的布局。

left: -10000px;: 将元素向左移动 10000 像素,确保在绝大多数屏幕分辨率下都不可见。

top: auto;: 让浏览器自动决定垂直位置,通常会保持元素在其原本的位置。

width: 1px;, height: 1px;: 将元素的宽高设置为 1 像素。这是一种保险措施,即使由于某些原因(例如用户禁用了绝对定位),元素仍然会很小,几乎不可见。

overflow: hidden;: 隐藏超出元素尺寸的内容,进一步确保视觉上的不可见性。

使用方法:

只需将该 CSS 类添加到需要隐藏的 HTML 元素上:

<div class="sr-only">这段文字只会被读屏软件读取。</div>

案例分析:

搜索框的标签:

<input type="text" id="search-input">
<label for="search-input" class="sr-only">搜索</label>
<button aria-label="搜索"></button>

在这个例子中,我们使用 aria-label 为按钮提供了无障碍名称。同时,我们为输入框关联了一个隐藏的

面包屑导航的提示:

<nav aria-label="面包屑导航">
    <span class="sr-only">目前位置:</span>
    <a href="/">首页</a> &gt;
    <a href="/articles">文章</a> &gt;
    <span>当前页面</span>
</nav>

通过添加隐藏的 "当前位置:",读屏软件用户能更清晰地理解这是一组面包屑导航链接。

CSS clip 和 clip-path

这是一种相对较新的技术,可以裁剪元素,使其只显示一个很小的区域(通常是 1 像素)。与屏幕外定位类似,这种方法也能实现视觉隐藏,同时保持读屏软件的可访问性。

.sr-only-clip {
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%); /* 更现代的裁剪方式 */
    height: 1px;
    width: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
}

clip: rect(1px, 1px, 1px, 1px);: 定义一个裁剪矩形,只显示元素内部的一个 1x1 像素的区域。

clip-path: inset(50%);: 一种更现代的裁剪方式,从元素的每个边缘向内裁剪 50%,最终也只留下一个极小的区域。

height: 1px;, width: 1px;, margin: -1px;, overflow: hidden;, padding: 0;, position: absolute;: 这些属性是为了增强兼容性和确保隐藏效果。

使用方法:

与 .sr-only 类类似,将该 CSS 类添加到需要隐藏的元素上:

<span class="sr-only-clip">这段文字也只会被读屏软件读取。</span>

案例分析:

clip 和 clip-path 的使用场景与 .sr-only 类似,都可以用于隐藏辅助文本或提示信息。

优化 “跳过” 链接的无障碍体验

为了不影响视觉设计,我们可以初始隐藏“跳过”链接,只在通过键盘聚焦时显示出来,但要确保读屏软件始终可以访问到它。

#skip a {
    position: absolute;
    left: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
#skip a:focus {
    position: static;
    width: auto;
    height: auto;
    overflow: visible; /* 或 auto,取决于具体需求 */
}
<div id="skip"><a href="#main-content">跳到主要内容</a></div>

<main id="main-content">
    <!-- 主要内容 -->
</main>

初始隐藏: 使用类似于 .sr-only 的样式将链接移出屏幕。

焦点显示: 使用 :focus 伪类,当链接获得键盘焦点时,将其 position 恢复为 static,并设置合适的 width、height 和 overflow,使其在屏幕上可见。

也可以使用 CSS transitions 来动画显示聚焦的“跳过”链接,使其从页面上方滑入,再在失去焦点后滑出。这种方式可以更清晰地提示用户链接的存在。

何时应该使用仅供读屏软件访问的内容?

通常情况下,仅当以下情况成立时,才应考虑使用此技术:

视觉信息不足以传达意义: 例如,一个图标需要额外的文本解释才能让视障者理解其含义。

提供额外的上下文或提示: 例如,为面包屑导航添加提示信息。

优化特定用户的体验: 例如,初始隐藏“跳过”链接以优化视觉设计,但确保其对键盘用户可用。

创建仅供读屏软件访问的内容是构建无障碍网页的重要组成部分。通过合理运用 .sr-only 类或 CSS clip 技术,我们可以为视障用户提供必要的补充信息和更好的导航体验,而不会干扰到健视用户。 开发者应该充分理解各种隐藏技术的特性和适用场景,谨慎使用,并始终以提升所有用户的网页体验为目标。 记住,无障碍设计的目标是包容性,让每个人都能平等地访问和使用网络信息。

参考资料:

https://webaim.org/techniques/css/invisiblecontent/

标签:网页,元素,访问,1px,软件,读屏,隐藏
From: https://www.cnblogs.com/netlog/p/18663038

相关文章

  • window11安装安卓子系统,畅玩安卓软件
    在Windows11刚推出时,微软便宣称该操作系统中可以直接安装运行安卓APK应用程序,如同Android虚拟机一样,不过是要实现这一功能,我们必须在Windows11中单独安装Windows11安卓子系统,这里说明一下其标准的名称为:适用于Android™️的Windows子系统(WindowsSubsystemforAndroid™️,简称......
  • 【用 JavaScript 做一个会动的 3D 魔方】:让网页酷到飞起!
    如果你对JavaScript有一点点了解,并且想尝试一些好玩儿的实战项目,那么3D魔方将是一个无敌的选择!这篇博客将手把手教你用原生JavaScript构建一个会旋转、可交互的3D魔方。项目效果预览一个可旋转的3D魔方,你可以通过鼠标或触摸操作与之交互:•旋转魔方:点击并拖动......
  • 软件架构师的秘密武器:23个经典案例助你轻松驾驭复杂系统
    设计模式的重要性设计模式,听起来挺高大上的,但其实它就是一些解决常见编程问题的“套路”或“模板”。想象一下你在做饭,有时候你会按照某个固定的步骤来做一道菜,这样既能保证味道好,又省时省力。设计模式在编程中也是这样的作用。设计模式提供了一套经过验证的解决方案,可以在不......
  • 五款强大报表软件助力企业提升数据分析效率
    本文将为大家介绍五款功能强大的报表软件,包括山海鲸报表、JReport、PowerBI、ZohoAnalytics和SAPCrystalReports。这些工具各具特色,能够帮助企业快速生成数据报表并进行深度分析。无论是数据可视化、报表定制、自动化生成还是与其他系统的集成,它们都能为企业的决策支持、业......
  • 图扑软件 | 智慧汽车展示平台
    中国智能电动汽车市场快速增长,消费者对智能电动汽车的需求持续扩大。各大厂商积极推出新车型,新兴品牌也不断涌现,增强了市场活力。同时,智能电动汽车的发展推动了电池、电机、智能控制系统等相关产业链的壮大,形成了完整的产业生态。这不仅支持了智能电动汽车的生产,也为中国经济带来......
  • 《软件测试技术》习题参考答案2
    ......
  • 科东软件获第十三届中国创新创业大赛(广东·广州赛区)三等奖
    近日,第十三届中国创新创业大赛(广东·广州赛区)暨2024年广州科技创新创业大赛圆满落幕。科东软件凭借“鸿道Intewell操作系统”在14个细分领域近2000家企业中脱颖而出,在总决赛取得第五名,荣获三等奖。科东软件获第十三届中国创新创业大赛(广东·广州赛区)三等奖本次大赛由广......
  • 2025年必备开源免费项目管理软件,9款工具全面解析,提升工作效率
    高效的项目管理对于团队和企业的成功至关重要。无论是小型创业团队还是大型企业,都需要合适的工具来协调资源、跟踪进度、管理任务。开源免费的项目管理软件因其灵活性、可定制性以及无需高昂成本的特点,成为了众多团队的首选。本文将为您详细介绍9款2025年必备的开源免费项目管理......
  • 软件系统安全逆向分析-混淆对抗
    1.概述在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子从无从下手到攻破目标。花指令对抗虚函数表RC42.实战-donntyousee题目载体为具有漏洞的小型软件,部分题目提供源代码,要求攻击者......
  • 【软件供应链安全】Saas化产品开发过程中的开源组件安全治理实践
    供应链金融业务及产品往往以Saas化服务租赁、贴牌及本地化标品应用部署的形式持续向国央企、军工、地产、金融机构及中小微企业提供服务,系统产品逐渐趋于成熟的同时,客户基于国家信息安全技术、法律法规及在产品安全质量上提出了比较高的要求,旨在确保软件开发生命周期安全、第三方......