【发布时间】:2021-09-07 09:54:39
【问题描述】:
假设我有一个太长的平面列表,所以我将只显示几个项目,“最后一个项目”是“更多按钮”。 关于如何让有读者的人可以访问它并且不影响 SEO 的任何提示?
因为列表是扁平的,所以没有可扩展嵌套节点https://www.w3.org/WAI/GL/wiki/Using_the_WAI-ARIA_aria-expanded_state_to_mark_expandable_and_collapsible_regions#Example_2:_Collapsing_and_expanding_subtrees_of_a_tree的选项
我不想将列表分成两个独立的带有列表的块并破坏连续性。
例子:
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li><button type="button">Show more</button></li>
<li hidden>Item 6</li>
<li hidden>Item 7</li>
<li hidden>Item 8</li>
<li hidden>Item 9</li>
...
</ul>
点击显示更多按钮后,隐藏的项目将被显示,按钮将从 DOM 中移除。
有什么简单的想法吗?我还只有不理想的复杂想法。
编辑 2021-09-08
我考虑过,我认为它能够以不同的方式做到这一点。使所有列表项都可用于辅助技术并且对 SEO 可见。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li role="none" aria-hidden="true"><button type="button">Show more</button></li>
<li class="clip-hidden">Item 6</li>
<li class="clip-hidden">Item 7</li>
<li class="clip-hidden">Item 8</li>
<li class="clip-hidden">Item 9</li>
...
</ul>
按钮onClick 事件将删除整个<li> 和role="none"。选项卡索引将保留在该区域中,因此如果 <a> 是 <li> 的子项,则下一项将关注用户操作。
对于评估技术/SEO 中的 UL,role="none"/aria-hidden="true" 是否存在任何潜在问题?
【问题讨论】:
-
您的第二个示例会破坏可访问性。 “显示更多”按钮仍可通过键盘访问,因此屏幕阅读器仍可通过 TAB 键访问它,但由于它包含在
aria-hidden元素中,因此不会为该按钮宣布任何内容。屏幕阅读器是静音的,用户会完全糊涂。
标签: html accessibility wai-aria