可访问性检查里最有效的一步,先放下鼠标:只用键盘从首页走到加购,走不通的地方就是问题所在。多数主题的问题在这一轮里会暴露出来,工具真正的作用是补上你看不见的部分,比如颜色对比度、朗读顺序和那些你没点到的组件。
工具评分是入口,不是结论
Shopify 的主题文档里列了几个检测工具:Accessibility Insights for Web、Lighthouse、WAVE,如果主题开发有持续集成流程,还可以把检查接进去,让改动带来的可访问性退化在提交流程里被发现(主题可访问性最佳实践)。同一页也写了一句需要记住的话:只遵循这些最佳实践并不保证主题完全可访问。工具能查出的是一部分机器可判断的规则,具体到你的产品、你的菜单、你的结算流程里是否真的可操作,还得靠人工走一遍。

这条路径走通,多数问题会自己出现(光算 · 示意图)
键盘走一遍购买路径
官方对键盘操作的要求很具体:焦点指示器要可见并且在各元素上保持一致;键盘焦点顺序要与 DOM 顺序一致,从左上到右下推进;Tab 与 Shift+Tab 都要能走通;元素获得焦点时不能发生上下文突然跳转;主题不应依赖鼠标悬停才能显示或访问内容。把这些要求变成动作,就是下面这条路径:
- 打开首页,只按 Tab 键往下走。焦点框是否每一步都看得见,有没有跳进你看不到的区域。
- 走到一级导航,用键盘展开下拉,再走进二级项。悬停才展开的菜单在这里会卡住,处理方式见大型菜单的可抓取与可操作取舍。
- 进入一个集合页,看筛选、排序、分页这些控件能不能用键盘操作,选完以后焦点有没有丢。
- 打开产品页,切换变体,确认变体被选中时状态有可读的反馈,而不只是一个颜色变化。
- 按到加购按钮,加入购物车,再打开购物车抽屉。抽屉打开后按 Esc,确认能关闭,并且焦点回到刚才那个按钮。
- 进入结算第一步,填写邮箱或账号字段,检查出错时提示是否读得到。
这一轮不需要任何工具,半小时内能做完。走完记下卡住的每一步,它比任何评分都更能说明问题在哪。
对比度不要用肉眼判断
两个颜色放在一起「看着还行」和实际能不能读是两回事,亮度接近的颜色在别人屏幕上可能是糊的。做法是取实际值:在浏览器的元素审查里读出文字颜色与背景色的色值,放进独立的对比度工具里算比值;有半透明遮罩、渐变背景或图片背景时,取文字所在位置的实际合成颜色再算。要覆盖的地方经常被漏掉:正文以外的辅助文字、按钮文字、输入框里的占位文字、禁用状态的按钮、输入框边框、以及链接色与背景的组合。悬停、按下、聚焦三种状态的颜色往往和默认态不同,也要各测一次。

取决于图片承担什么信息(光算 · 示意图)
WCAG 对正文与大号文字的对比度有明确比值要求,具体数值以标准文本为准,这里不写数字,避免记错之后照着改。官方整理的最佳实践页面本身没有给出对比度阈值,所以这部分属于你要自己按标准核对的范围。改的时候顺带看一件事:把品牌色用在按钮上之前,先确认白色的按钮文字在这个颜色上仍然清楚;品牌色的浅色版更适合做背景,不适合做文字色。
表单与错误提示
表单上真正让人放弃的情况,是填错了却不知道为什么。逐个字段过这几项:每个输入框都有可见的标签,标签和输入框在代码层面关联起来,不能靠占位文字充当标签(输入一开始占位文字就消失了);必填项在字段旁有文字说明,不只用星号;校验失败时错误提示出现在对应字段附近,并且是文字,红框或红字单独出现对色觉障碍用户没有信息;提交失败后焦点移到第一个出错的字段;成功与失败状态的变化同时改变文字,不能只改变边框颜色或图标。
结算流程有一部分字段与校验由平台渲染,主题层能改的地方有限,所以先在结算页实测一遍,把能改和不能改分开记录,再决定哪些问题交给主题、哪些只能接受。
轮播、弹窗和自定义组件的常见失败点
首页轮播是问题最集中的地方:自动播放会让还没读完的买家被切走,而且经常没有暂停入口;切换用的指示点如果没有可读名称,键盘和朗读工具都用不上。弹窗与订阅浮层的典型毛病是打开之后焦点还留在后面的页面上,Esc 关不掉,关闭按钮只有一个图标却没有可读的文字名称。自己写的折叠面板、标签页、数量选择器同理:能用原生元素就用原生元素,浏览器已经替你把键盘操作和朗读行为做好了;用普通元素加点击事件重做一遍,丢掉的往往就是这几件事。
图片替代文本:什么该写,什么留空
替代文本的作用是让看不到图的人知道这张图提供了什么信息。写之前先问:这张图去掉之后,页面有没有信息损失。有就写,没有就留空。
| 图片类型 | 替代文本怎么写 |
|---|---|
| 商品主图与场景图 | 写型号、颜色或款式等能区分产品的信息,不做形容词堆砌 |
| 细节图 | 写清是哪个部位或哪个角度,比如接口位置、底部结构 |
| 纯装饰图与分隔元素 | 留空,让辅助工具跳过;留空比随手写一句话更准确 |
| 图标按钮 | 写它的功能,比如加入收藏、切换到下一张图 |
替代文本不是关键词位置。同一张图在列表页和详情页反复出现,用同一句描述就够了,为每处换一套说法不会带来额外好处。图片上带有文字内容时,那段文字要写进替代文本或页面正文,不能只存在于图片里。
标题层级和朗读顺序
页面上的标题层级是朗读顺序的主要线索。产品页的 H1 是产品名,下面各块用二级、三级标题,不要为了字号好看跳级,也不要用加粗的段落冒充标题——视觉上像标题和结构上是标题,对读屏用户完全是两回事。检查办法是看源代码里的标题标签顺序,而不是看页面上的字大字小。同一页出现多个 H1,通常说明模板或某个应用重复输出了标题,值得顺手确认来源。
多久检查一次,检查什么
可访问性的退化通常是改主题或加应用时带进来的,所以把检查挂在改动之后比定期全站体检更有效:主题改过之后、新装应用之后、上新一个自定义 section 之后,各跑一次上面那条键盘路径和对比度抽查。自己写的展示块要看自己有没有用可点击的元素冒充链接、有没有把状态只做成颜色变化,这类问题的检查项和自定义 section 的写法可以放在一起过。
每次检查留个记录:日期、检查了哪些页面、发现的问题、是否修复。下一次改动之后对比同一份记录,比凭印象判断「好像变好了」可靠。如果能找到使用键盘或朗读工具的真实用户试一次,得到的反馈通常比工具报告更具体。主题文件层面的分工要先弄清楚,至少知道自己改的是哪一层,见主题目录的职责划分。
可访问性和 SEO 有重叠,但不能互相替代
重叠的部分是真实存在的:能被机器读到的文本、能描述目标的链接文字、写得准确的替代文本、清晰的层级结构,这些对搜索和辅助工具都是加分项。不重叠的部分同样真实:键盘能不能走完购买流程、焦点顺序对不对、对比度够不够、错误提示能不能读,这些直接影响的是能不能下单,对排名没有直接作用。一边改善不等于另一边自动改善——把流量做起来是另一条线,做法可以看增加 Shopify 商店流量的几个方向,而站内的操作体验决定了流量进来之后会不会走完流程。
还有几件事需要说清楚。遵循最佳实践不等于达到某个合规等级,没有做过对应测试和记录之前,不要在页面上写「符合 WCAG 某个等级」这类声明,Shopify 官方文档也提醒过遵循这部分最佳实践并不能保证主题完全可访问。第三方应用注入的控件不在主题检查范围内,客服组件、订阅弹层、评论框这些要单独测,问题归属也在应用方。检测工具的规则会更新,去年的结论今年要重跑一遍再引用。移动端的触控目标和键盘路径是不同场景,移动端还有自己的一套检查顺序,可以参考移动端检查顺序的思路来安排页面试测顺序。
如果站点正在新建或改版,把这几项放进验收流程比上线后回头补便宜得多,我们在做外贸建站时也是按这个顺序排验收项的。