VideoPlayer 设计文档
视频播放器:原生 <video> + 框架无关状态机(@chenzy-design/core),无第三方媒体库,严格对齐 Semi VideoPlayer。DOM 镜像 Semi(cd-videoPlayer 驼峰前缀:wrapper/video + poster img + 中央播放键 IconPlayCircle + ErrorSvg 插画 + notification + controls(VideoProgress + menu-left/right))。复用 Button/Popover/Dropdown/AudioSlider + 11 具名图标。支持播放/暂停、进度拖拽跳转(含章节 markers 多段+缓冲/已播放双层+hover 放大+Tooltip 预览)、音量(Popover 竖向 AudioSlider,0–100 静音派生 0↔50)、倍率/清晰度/线路 Dropdown 切换(切后回跳原播放位置)、镜像、画中画、全屏、瞬时通知。controlsList 控制控件增删,theme 仅切换容器背景。键盘:Space 播放/暂停、←/→ 按 seekTime 跳转(焦点在播放器内时)。照搬 Semi 缺陷:clickToPlay 死 prop、next 控件绑 play/pause、硬编码色、音量键盘不实现;不复刻 Semi keydown 泄漏 bug。
← API 文档使用建议
视频播放器:原生 <video> + 框架无关状态机(@chenzy-design/core),无第三方媒体库,严格对齐 Semi VideoPlayer。DOM 镜像 Semi(cd-videoPlayer 驼峰前缀:wrapper/video + poster img + 中央播放键 IconPlayCircle + ErrorSvg 插画 + notification + controls(VideoProgress + menu-left/right))。复用 Button/Popover/Dropdown/AudioSlider + 11 具名图标。支持播放/暂停、进度拖拽跳转(含章节 markers 多段+缓冲/已播放双层+hover 放大+Tooltip 预览)、音量(Popover 竖向 AudioSlider,0–100 静音派生 0↔50)、倍率/清晰度/线路 Dropdown 切换(切后回跳原播放位置)、镜像、画中画、全屏、瞬时通知。controlsList 控制控件增删,theme 仅切换容器背景。键盘:Space 播放/暂停、←/→ 按 seekTime 跳转(焦点在播放器内时)。照搬 Semi 缺陷:clickToPlay 死 prop、next 控件绑 play/pause、硬编码色、音量键盘不实现;不复刻 Semi keydown 泄漏 bug。
Accessibility
ARIA role:application
- Space 播放/暂停、←/→ 按 seekTime 跳转,仅当焦点在播放器容器内时响应(Semi handleBodyKeyDown,避免劫持页面其他控件键位);音量键盘调节照搬 Semi 未实现
- 控件为本库 Button,aria-label 走 locale(play/pause/mute/unmute/fullscreen/exitFullscreen/pictureInPicture/mirror/volume)
- 进度条 role=slider,aria-valuemin/max/now 为秒;章节标记多段(markers)
- 音量为 Popover 内竖向 AudioSlider(role=slider 0–100);静音按钮 aria-pressed
- 倍率/清晰度/线路为 Dropdown:触发块补 role=button + aria-haspopup=menu/aria-expanded(修 axe),Dropdown.Item active 标注选中
- 加载/卡顿通知 aria-live=polite;错误态 role=alert(ErrorSvg 插画 + 文案)
设计变量
该组件暂无专属设计变量。