PlayButton

预计阅读时间: 3 分钟

播放/暂停切换按钮,具有键盘支持和可自定义渲染功能。

结构

<PlayButton />

行为

PlayButton 是一个三态按钮:播放暂停重播。当媒体到达末尾(ended 状态)时,点击会从头开始重新播放。

样式

使用 [data-paused][data-ended] 属性根据状态显示/隐藏播放/暂停/重播图标:

/* 暂停(但未结束) */
.play-button[data-paused]:not([data-ended]) .play-icon { display: inline; }

/* 播放中 */
.play-button:not([data-paused]) .pause-icon { display: inline; }

/* 已结束 */
.play-button[data-ended] .replay-icon { display: inline; }

首次播放后,data-started 属性被添加并保持存在,直到加载新源。使用此属性在媒体尚未开始时隐藏播放按钮:

/* 首次播放前隐藏播放按钮 */
.play-button:not([data-started]) .play-icon { display: none; }

无障碍

渲染一个 <button> 元素,带有根据状态自动更新的 aria-label:"Play"、"Pause" 或 "Replay"。可通过 label 属性覆盖(接受字符串或函数)。键盘激活:Enter / Space

示例

基本用法

import { PlayButton } from '@videojs/react';

function Controls() {
  return <PlayButton />;
}

自定义渲染

<PlayButton
  render={(props, state) => (
    <button {...props}>
      {state.paused ? '播放' : '暂停'}
    </button>
  )}
/>

API 参考

属性

属性类型默认值描述
disabledbooleanfalse是否禁用按钮
labelstring | ((state) => string)自动覆盖默认的 aria-label
renderRenderProp-自定义渲染函数

状态

状态类型描述
pausedboolean是否暂停
endedboolean是否已播放结束
startedboolean是否已开始播放
labelstring当前按钮标签

Data 属性

属性描述
data-paused-当视频暂停时存在
data-ended-当视频播放结束时存在
data-started-当视频已开始播放后存在

参见