无障碍访问
Accessibility 模块提供了 WCAG 2.1 AA 合规性功能,在 AdminLTE 加载时会自动初始化。
功能特性
| 功能 | WCAG 标准 | 描述 |
|---|---|---|
| 跳过链接 | 2.4.1 绕过区块 | 添加“跳转到主要内容”和“跳转到导航”链接。 |
| Focus Management | 2.4.3 & 2.4.7 | Modal focus restoration to the triggering element and Escape handling. |
| 键盘导航 | 2.1.1 键盘 | 菜单中的方向键导航,自定义按钮的 Enter/Space 键支持。 |
| 减少动画 | 2.3.3 动画 | 通过禁用动画来尊重 prefers-reduced-motion 偏好设置。 |
| 实时通告 | 4.1.3 状态消息 | 向屏幕阅读器通告错误和成功消息。 |
| 错误识别 | 3.3.1 和 3.3.2 | 自动为无标签的输入添加标签,通告表单验证错误。 |
| 表格无障碍 | 1.3.1 信息和关系 | 自动为表格表头添加 scope 属性。 |
配置
该模块在 adminlte.ts 中初始化,默认启用所有功能:
initAccessibility({
announcements: true,
skipLinks: true,
focusManagement: true,
keyboardNavigation: true,
reducedMotion: true
})
将任意选项设为 false 即可禁用该功能。
调用方式
import { initAccessibility } from 'admin-lte'
const a11y = initAccessibility()
// 向屏幕阅读器通告消息
a11y.announce('项目已成功保存', 'polite')
a11y.announce('表单有错误', 'assertive')
// 聚焦特定元素
a11y.focusElement('#my-input')
// 将焦点锁定在容器内(适用于自定义模态框/对话框)
a11y.trapFocus(document.querySelector('.my-dialog'))
// 为页面添加语义化的地标
a11y.addLandmarks()
工具函数
import { accessibilityUtils } from 'admin-lte'
// 检查颜色对比度(WCAG 1.4.3)
const result = accessibilityUtils.checkColorContrast('rgb(0,0,0)', 'rgb(255,255,255)')
// { ratio: 21, passes: true }
// 检查元素是否可聚焦
accessibilityUtils.isFocusable(element)
// 为 ARIA 属性生成唯一 ID
accessibilityUtils.generateId('modal') // "modal-x7k2m9p4q"
CSS 类
| 类名 | 描述 |
|---|---|
skip-links |
跳过导航链接的容器。 |
skip-link |
单个跳过链接,仅在聚焦时可见。 |
reduce-motion |
当用户偏好减少动画时,添加到 <body> 上。 |
sr-only |
仅屏幕阅读器可见的内容(视觉上隐藏)。 |
live-region |
用于动态通告的 ARIA 实时区域。 |
注意事项
- 该模块与 Bootstrap 的模态框和下拉菜单事件集成,用于焦点管理。
-
模态框的 Escape 键处理交由 Bootstrap 处理,以尊重
keyboard: false设置和堆叠模态框。 - 表单验证通告会自动适用于任何带有 HTML5 验证属性的输入框。