移动端键盘聚焦元素被遮挡时如何排查
键盘聚焦元素被遮挡时,应检查是否因作者创建的内容覆盖导致,并确认用户能否在不改变键盘焦点的情况下揭示该元素。
排查元素是否被作者创建的内容遮挡
当用户界面组件获得键盘焦点时,如果该组件被包含的作者创建内容完全隐藏,则不符合标准。作者创建的内容通常指通过 CSS 或 HTML 编写的视觉元素,例如绝对定位的遮罩层或悬浮的提示框。如果这些元素覆盖了当前获得焦点的组件,屏幕阅读器或键盘用户将无法感知该组件的存在。检查时,应查看页面源码中是否有绝对定位的 div 或其他元素覆盖在可聚焦元素之上。
如果界面内容可以由用户重新定位,测试时仅考虑用户可移动内容的初始位置。这意味着如果用户通过拖拽或滑动改变了覆盖层的位置,只要在初始状态下组件未被完全遮挡,通常不被视为违反标准。此外,用户打开的内容(如下拉菜单或弹窗)遮挡焦点组件是被允许的,因为用户可以关闭这些内容来揭示焦点组件。只有当组件被静态的作者创建内容永久遮挡时,才需要调整布局或层级关系。
验证用户能否在不改变焦点的情况下揭示组件
即使组件被部分遮挡,只要用户能够在不改变键盘焦点的情况下揭示该组件,就不被视为完全隐藏。例如,如果遮罩层有一个关闭按钮,用户可以通过点击该按钮移除遮罩层,从而看到被遮挡的焦点组件,那么这种遮挡是被允许的。验证这一点的关键是确认遮罩层或覆盖物是否提供了交互机制,允许用户将其移除或调整。
如果遮罩层是静态的,且没有提供关闭或移除的机制,那么用户无法在不改变焦点的情况下揭示组件,这将导致组件被判定为隐藏。这种情况下,需要修改代码,确保遮罩层不会永久遮挡焦点组件,或者为遮罩层添加关闭功能。测试时,应模拟键盘操作,确保在组件获得焦点后,用户可以通过简单的交互(如点击关闭按钮)移除遮挡物。
检查组件的初始位置与布局结构
对于可配置的界面,测试时仅考虑用户可移动内容的初始位置。这意味着如果界面布局允许用户调整覆盖层的位置,那么在初始状态下组件未被遮挡时,通常符合标准。检查布局结构时,应确保可聚焦元素位于文档流中,且没有被绝对定位的覆盖层覆盖。如果覆盖层是动态生成的,应确保其在初始渲染时不会遮挡焦点组件。
如果界面布局复杂,可能需要使用开发者工具检查元素的层级关系和位置。确保焦点组件的 z-index 高于覆盖层,或者覆盖层的位置不会遮挡焦点组件。如果覆盖层是动态的,应检查其生成逻辑,确保其在初始状态下不会遮挡焦点组件。测试时,应模拟键盘操作,确保在组件获得焦点后,覆盖层不会遮挡组件。
调整布局或层级关系以符合标准
如果发现组件被作者创建的内容遮挡,且无法通过用户交互揭示,则需要调整布局或层级关系。可以通过调整 z-index 属性,确保焦点组件的层级高于覆盖层。或者,可以修改覆盖层的定位方式,使其不会遮挡焦点组件。如果覆盖层是动态生成的,应修改其生成逻辑,确保其在初始状态下不会遮挡焦点组件。
调整后,应重新测试键盘操作,确保组件在获得焦点时不会被遮挡,且用户可以通过交互揭示组件。如果界面是可配置的,应确保用户可移动内容的初始位置不会遮挡焦点组件。测试时,应模拟键盘操作,确保在组件获得焦点后,用户可以通过简单的交互移除遮挡物。如果调整后仍无法满足标准,可能需要重新设计界面布局,确保焦点组件始终可见。
资料与延伸阅读
你可以通过以下原始资料核对文中概念,并继续深入阅读。