
本文旨在解决Web表单中常见的“重复标签”可访问性错误。当一个输入框同时使用`
在构建可访问的Web表单时,为输入字段提供清晰、明确的标签至关重要。辅助技术(如屏幕阅读器)依赖这些标签来向用户传达输入字段的用途。然而,不当的标签实践可能导致“重复标签”等可访问性错误,这不仅会造成代码冗余,还可能混淆辅助技术,降低用户体验。本文将深入探讨这一问题,并提供专业的解决方案。
当可访问性测试工具(如ARC Toolkit、Lighthouse或axe DevTools)报告“重复标签”错误时,通常意味着一个交互式元素(如)被赋予了多重、可能冲突或冗余的标签信息。一个常见场景是,一个元素同时使用了HTML
尽管从视觉上看,用户可能只看到一个标签,但对于辅助技术而言,同时存在的两种标签机制可能会导致以下问题:
问题的核心在于aria-label属性在可访问名称计算中的高优先级。根据W3C的《可访问名称计算1.1》(Accessible Name Computation 1.1)规范,计算元素可访问名称的步骤如下:
这意味着,当一个元素同时存在一个关联的
考虑以下表单结构,其中一个输入框同时拥有
<form onsubmit="return false;" class="city-form-inner">
<div id="ember506" class="wrap-autocomplete ember-view">
<!-- HTML <label> 元素,通过 for 属性关联输入框 -->
<label for="search-locations-address">Enter ZIP, State or City</label>
<div class="autocomplete-input">
<!-- 核心问题:同时存在 aria-label 属性,且内容与 <label> 相同 -->
<input aria-label="Enter ZIP, State or City"
role="combobox"
aria-expanded="false"
type="text"
name="search-locations-address"
id="search-locations-address"
class="form-control ember-text-field ember-view ui-autocomplete-input"
autocomplete="off">
<ul id="ui-id-1" tabindex="0" class="ui-menu ui-widget ui-widget-content ui-autocomplete custom-autocomplete ui-front" role="listbox" style="display: none;"></ul>
</div>
<div role="status" aria-live="polite" class="autocomplete-status">0 results are available, use up and down arrow keys to navigate</div>
</div>
<input type="button" value="Find Stores" class="btn-blue submit" data-ember-action="" data-ember-action-513="513">
</form>在这个示例中,虽然
鉴于
<form onsubmit="return false;" class="city-form-inner">
<div id="ember506" class="wrap-autocomplete ember-view">
<label for="search-locations-address">Enter ZIP, State or City</label>
<div class="autocomplete-input">
<!-- 优化后:移除了冗余的 aria-label 属性 -->
<input role="combobox"
aria-expanded="false"
type="text"
name="search-locations-address"
id="search-locations-address"
class="form-control ember-text-field ember-view ui-autocomplete-input"
autocomplete="off">
<ul id="ui-id-1" tabindex="0" class="ui-menu ui-widget ui-widget-content ui-autocomplete custom-autocomplete ui-front" role="listbox" style="display: none;"></ul>
</div>
<div role="status" aria-live="polite" class="autocomplete-status">0 results are available, use up and down arrow keys to navigate</div>
</div>
<input type="button" value="Find Stores" class="btn-blue submit" data-ember-action="" data-ember-action-513="513">
</form>通过移除aria-label,输入框的可访问名称将回退到由
为了确保表单的可访问性和代码的健壮性,请遵循以下最佳实践:
<label for="username">用户名:</label> <input type="text" id="username">
<!-- 无可见标签的搜索框 --> <input type="search" aria-label="搜索网站内容">
<p id="email-desc">请输入您的电子邮箱地址。</p> <input type="email" aria-labelledby="email-desc" id="email-input">
解决“重复标签”可访问性错误的关键在于理解aria-label与
以上就是深入理解aria-label与label:解决表单重复标签可访问性问题的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号