HTML5 <video> 标签属性、API 方法、事件、自定义样式详解与实用示例

news2024/11/27 21:02:07

在这里插入图片描述

HTML5 <video> 标签为网页内嵌视频提供了强大且便捷的功能。以下是对 <video> 标签的主要属性、API 方法、事件、自定义样式及其使用示例的详细介绍:

一、属性

1. src

  • 定义:指定视频文件的 URL。
  • 示例:
    <video src="my_video.mp4"></video>
    

2. controls

  • 定义:当设置此属性时,浏览器会显示内置的播放控制(如播放/暂停按钮、音量控制、全屏切换等)。
  • 示例:
    <video src="my_video.mp4" controls></video>
    

3. widthheight

  • 定义:设置视频播放器的宽高(以像素为单位)。
  • 示例:
    <video src="my_video.mp4" width="640" height="360"></video>
    

4. poster

  • 定义:指定视频加载时显示的封面图片 URL。
  • 示例:
    <video src="my_video.mp4" poster="video_cover.jpg"></video>
    

5. autoplay

  • 定义:如果设置,视频将在页面加载后自动开始播放。
  • 示例:
    <video src="my_video.mp4" autoplay></video>
    

6. loop

  • 定义:当设置时,视频会在播放结束后自动重头开始。
  • 示例:
    <video src="my_video.mp4" loop></video>
    

7. muted

  • 定义:设置视频初始为静音状态。
  • 示例:
    <video src="my_video.mp4" muted></video>
    

8. preload

  • 定义:指示浏览器如何预先加载视频数据。可选值有:
    • none:不预加载视频数据。
    • metadata:仅预加载视频元数据(如时长、尺寸)。
    • auto:尽可能多地预加载视频内容。
  • 示例:
    <video src="my_video.mp4" preload="metadata"></video>
    

9. crossorigin

  • 定义:指定视频是否应该以 CORS 方式加载。这对于需要访问视频帧数据的跨域视频至关重要。可选值有:
    • anonymous:请求不包含凭据。
    • use-credentials:请求包含凭据(如 cookie、HTTP 认证等)。
  • 示例:
    <video src="https://other-domain.com/my_video.mp4" crossorigin="anonymous"></video>
    

10. controlslist

HTML5 的 <video> 标签提供了丰富的媒体播放功能,其中 controlslist 属性允许开发者精细控制浏览器提供的默认视频控件中显示或隐藏的特定组件,以适应不同的用户体验需求或设计要求。以下是关于 controlslist 属性的详细说明:

controlslist 属性可以直接应用于 <video> 元素。要启用它,只需在 HTML 代码中的 <video> 标签中添加 controlslist 属性,并设置其值为一个空格分隔的控件列表。例如:

<video src="my_video.mp4" controls controlslist="nodownload noplaybackrate">

10.1. 可用值

controlslist 支持以下值,这些值可单独使用或组合使用:

  • nodownload:阻止显示下载按钮,防止用户直接下载视频文件。这有助于保护视频内容的版权或限制离线访问。

  • nofullscreen:禁止全屏模式按钮的显示,防止用户将视频切换到全屏观看。

  • noremoteplayback(或 disableremoteplayback):禁用远程播放选项,如在连接到同一网络的其他设备(如智能电视)上投射或播放视频。

  • noplaybackrate:移除播放速度控制器,用户将不能调整视频的播放速率(如快进、慢放或倒带)。

  • nokeyboard(实验性,非标准):在某些浏览器中,可能用于隐藏键盘快捷键提示或禁止通过键盘操作视频控件。

请注意,不是所有浏览器都完全支持所有的 controlslist 值,尤其是在 nokeyboard 这种较新或实验性的特性上。对于广泛支持的值(如 nodownloadnofullscreennoremoteplaybacknoplaybackrate),现代浏览器通常会遵循这些指示。

10.2. 默认行为与覆盖

默认情况下,如果仅使用 controls 属性而未指定 controlslist,浏览器将显示一组完整的标准控件,包括播放/暂停按钮、进度条、音量控制、全屏按钮、下载按钮(如果支持),以及可能的播放速度控制器。

当指定了 controlslist 并包含否定属性(如 nodownload),浏览器会相应地隐藏或禁用指定的控件。例如,如果希望仅显示基本的播放/暂停、进度条和音量控制,同时禁止下载、全屏和播放速度调整,可以这样设置:

<video src="my_video.mp4" controls controlslist="nodownload nofullscreen noplaybackrate">

10.3. 浏览器兼容性

虽然 controlslist 是 HTML5 规范的一部分,但实际支持情况可能因浏览器版本不同而有所差异。一些较新的或实验性的功能(如 nokeyboard)可能只有在特定浏览器或特定版本中才能使用。在实际应用时,建议查阅最新的浏览器兼容性数据,确保所使用的 controlslist 值在目标用户群体的主流浏览器中得到良好支持。

10.4. 替代方案

对于不被所有浏览器广泛支持的 controlslist 值,或者为了实现更定制化的视频播放器外观与功能,开发者可以选择使用第三方 JavaScript 库或自定义 CSS/JavaScript 来创建完全自定义的视频控件界面。这种情况下,可以移除 controls 属性并自行编写交互逻辑,从而实现对视频播放器的完全控制。

总结来说,HTML5 <video> 标签的 controlslist 属性提供了一种简便的方法来定制浏览器默认视频控件的显示内容,允许开发者根据项目需求隐藏特定功能以增强内容保护或优化用户界面。在使用时应注意浏览器兼容性,并在必要时结合自定义代码实现更复杂的播放器定制。

二、API 方法

1. play()

  • 定义:开始或恢复视频播放。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.play();
    

2. pause()

  • 定义:暂停视频播放。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.pause();
    

3. load()

  • 定义:重新加载视频源。通常在更改 src 属性或需要刷新视频状态时调用。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.src = 'new_video.mp4';
    videoElement.load();
    

4. currentTime

  • 定义:获取或设置当前视频播放的时间位置(以秒为单位)。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    
    // 获取当前播放时间
    let currentTime = videoElement.currentTime;
    
    // 跳转到指定时间
    videoElement.currentTime = 30;  // 秒
    

5. duration

  • 定义:获取视频的总时长(以秒为单位)。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    let totalDuration = videoElement.duration;
    

6. volume

  • 定义:获取或设置视频的音量。取值范围为 0.0(静音)至 1.0(最大音量)。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    
    // 获取当前音量
    let currentVolume = videoElement.volume;
    
    // 设置音量
    videoElement.volume = 0.5;  // 一半音量
    

7. playbackRate

  • 定义:获取或设置视频的播放速率。大于 1.0 表示加速播放,小于 1.0 表示慢速播放,1.0 为正常速度。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    
    // 获取当前播放速率
    let playbackRate = videoElement.playbackRate;
    
    // 设置播放速率
    videoElement.playbackRate = 1.5;  // 1.5 倍速播放
    

三、事件

1. play

  • 定义:当视频开始或恢复播放时触发。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.addEventListener('play', function () {
      console.log('Video is now playing.');
    });
    

2. pause

  • 定义:当视频暂停时触发。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.addEventListener('pause', function () {
      console.log('Video has been paused.');
    });
    

3. ended

  • 定义:当视频播放到达结尾时触发。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.addEventListener('ended', function () {
      console.log('Video has finished playing.');
    });
    

4. timeupdate

  • 定义:当当前播放时间发生变化时频繁触发。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.addEventListener('timeupdate', function () {
      console.log('Current time:', videoElement.currentTime);
    });
    

5. error

  • 定义:当视频加载或播放过程中发生错误时触发。
  • 示例(JavaScript):
    const videoElement = document.querySelector('video');
    videoElement.addEventListener('error', function (event) {
      console.error('An error occurred:', event);
    });
    

四、多源支持

为了兼容不同的浏览器对视频编码格式的支持,可以使用 <source> 标签提供多个视频源。浏览器会自动选择第一个能成功加载和播放的源:

<video controls>
  <source src="my_video.mp4" type="video/mp4">
  <source src="my_video.webm" type="video/webm">
  <source src="my_video.ogv" type="video/ogg">
  Your browser does not support the video tag.
</video>

五、自定义 video controlslist 的布局与样式

在使用 video 原生 controlslist 情况下,自定义 video controlslist 的布局与样式,实际上就是通过 原生 JavaScript 以及 Css 对 video controlslist 标签 DOM 样式或内容进行自定义修改。当然,也可以隐藏原生的controlslist,通过调用 video 相关 API 创建新的自定义controlslist 的布局与样式。

1、开启 shadow DOM

在Chrome浏览器中打开开发者调试工具-设置-Elements:勾选如图当中的 Show user agent shadow DOM。

在这里插入图片描述
然后再去审查Video元素,就能够看到如图当中的 dom 结构。

在这里插入图片描述

2、样式修改

通过CSS 修改 videco controlslist 伪类的 属性可以修改controlslist 的样式。

请注意,这些样式可能需要特定的前缀,并且随着浏览器更新,其内部结构可能发生变化,导致上述代码失效。

3、内容修改

可以通过原生 JavaScript 可以修改 videco controlslist 的内容显示。

综上所述,HTML5 <video> 标签提供了丰富的属性、API 方法以及事件支持,使得开发者可以轻松地在网页中嵌入视频内容,并对其进行精细控制和交互处理。通过合理运用这些功能,可以创建出具有良好用户体验的多媒体网页。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1603823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第一天 | 704. 二分查找 | 27. 移除元素

704. 二分查找 int search(int* nums, int numsSize, int target) {int left 0, right numsSize, mid;while (left < right) {mid left (right -left) / 2;if (nums[mid] < target) {left mid 1;} else if (nums[mid] > target) {right mid;} else {return mid…

javaswing + mysql通讯录

javaswingaddressbook 需要代码私聊

windows11 wsl2 ubuntu20.04安装vision mamba并进行测试

windows11 wsl2 ubuntu20.04安装vision mamba 安装流程使用cifar-100测试安装成功 安装流程 vision mamba安装了半天才跑通&#xff0c;记录一下流程在wsl上安装cuda wget https://developer.download.nvidia.cn/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05…

【面试题】MySQL 事务的四大特性说一下?

事务是一个或多个 SQL 语句组成的一个执行单元&#xff0c;这些 SQL 语句要么全部执行成功&#xff0c;要么全部不执行&#xff0c;不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位&#xff0c;由一个有限的数据库操作序列构成。 事务的主要作用是保证数…

【Python】穿越Python的迭代之旅:while,for 循环的奇妙世界

欢迎来到CILMY23的博客 本篇主题为&#xff1a; 穿越Python的迭代之旅&#xff1a;while&#xff0c;for 循环的奇妙世界 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&…

UE4_动画基础_相同骨骼的动画重定向步骤

学习笔记&#xff0c;仅供参考&#xff01; 动画重定位 是对现有动画稍加修改后用于多个角色的过程&#xff0c;它使你无需创建全新的动画&#xff0c;因为你可以在多个角色间共享动画资源。 存在两种形式的动画重定位&#xff0c;在第一种形式中&#xff0c;你要与之共享动画…

18 统计网站每日的访问次数

1.将竞赛的数据上传HDFS,查看数据的格式 通过浏览器访问hdfs,查看该文档前面的部分数据 每条数据的字段值之间使用逗号隔开的 &#xff0c;最终时间是第五个自动&#xff0c;获取第五个字段值的中的年月日。 2.通过Idea创建项目mr-raceData ,基础的配置 修改pom.xml,添加依赖 …

QML和QtQuick简介以及QML实例

从 Qt 4.7 开始&#xff0c;Qt 引入了一种声明式脚本语言&#xff0c;称为 QML&#xff08;Qt Meta Language 或者 Qt Modeling Language&#xff09;&#xff0c;作为 C 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库。 QML 是一种基于 JavaScript 的声明式语言。…

zookeeper实验部署

一、前期部署 IP地址 主机名安装软件系统版本192.168.10.8 node1apache-zookeeper-3.5.7-bin.tar.gz centos7.5 192.168.10.9 node2apache-zookeeper-3.5.7-bin.tar.gzcentos7.5192.168.10.10 node3apache-zookeeper-3.5.7-bin.tar.gzcentos7.5 二、zookeeper实验部署 2.1 同时…

SRIO系列-基本概念及IP核使用

参考&#xff1a;串行RapidIO: 高性能嵌入式互连技术 | 德州仪器 SRIO协议技术分析 - 知乎 PG007 目录 一、SRIO介绍 1.1 概要 1.2 SRIO与传统互联方式的比较 1.3 串行SRIO标准 1.4 SRIO层次结构&#xff1a; 1.4.1 逻辑层 1.4.2 传输层协议 1.4.3 物理层 二、Xilinx…

Go: 理解 Sync.Pool 的设计

sync 包提供了一个强大且可复用的实例池&#xff0c;以减少 GC 压力。在使用该包之前&#xff0c;我们需要在使用池之前和之后对应用程序进行基准测试。这非常重要&#xff0c;因为如果不了解它内部的工作原理&#xff0c;可能会影响性能。 池的限制 我们来看一个例子以了解它…

ELK及ELFK排错

目录 一、ELK及ELFK排错思路 1.1filebeat侧排查 1.2logstash侧排查 1.3ES、kibana侧问题 一、ELK及ELFK排错思路 1.1filebeat侧排查 第一步&#xff1a;排查filebeat上的配置文件有没有写错&#xff0c;filebeat的配置文件是yml文件&#xff0c;一定要注意格式。 第二步…

【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅

整个过程下来&#xff0c;给我的感觉就和吃了翔一样难受&#xff0c;窒息的感觉&#xff0c;全程没少骂win11的设计者... 因为要调试一些只有在windows才会出现的测试平台bug&#xff0c;于是我耗重金购入了一台顶配windows笔记本。以下是配置&#xff1a; 配置还蛮高的对吧&am…

基于Springboot+Vue+Spring-Security+高德地图API的校园出行管理系统

1介绍 1.1编写目的 明确系统功能与操作流程&#xff0c;说明书提供了详细的系统功能描述和操作指南&#xff0c;使得用户能够了解如何通过系统申请请假、审批流程以及如何管理和监控请假记录等。 1.2文档范围 该文档的目的是解决整个项目系统中“做什么”的问题。对于开发技…

Vue结合ECharts与SpringBoot,实现高效数据库图表绘制

目录 Echart图表的优点 功能丰富 美观性 跨平台兼容性 易于使用 交互性强 扩展性强 社区支持 效果展示 使用Echart的步骤 假数据 1、安装 2、在vue中引入&#xff08;全局引入&#xff09; 3、在vue中的使用 4、模板代码放在哪个位置 5、完整的一个vue页面实例…

如何为Postgres数据库设置安全的访问控制和权限管理

文章目录 解决方案1. 使用角色和权限管理2. 配置认证方法3. 使用网络访问控制4. 定期审查和更新权限 示例代码1. 创建角色并分配权限2. 配置密码认证3. 配置网络访问控制 总结 PostgreSQL是一个功能强大的开源关系型数据库系统&#xff0c;提供了丰富的权限和访问控制机制&…

移动端双验证码登录实现

说明&#xff1a;本文介绍如何用图形验证码短信验证码实现移动端登录思路&#xff1b; 分析 通过手机号图形验证码手机验证码实现登录的时序图如下&#xff1a; 说明&#xff1a; &#xff08;1&#xff09;用户进入登录界面&#xff0c;出现图形验证码&#xff0c;可点击图形…

Jsp 中的getServletContext全局数据共享

servletContext作用于不同用户之上 1. 一个用户将数据保存到了servletContext中, // getcontext的servlet程序 Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context this.get…

upload-labs靶场详解

靶场环境 下载链接&#xff1a;https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master 使用小皮集成环境来完成这个靶场 将文件放到WWW目录下就可以进行访问 进入关卡后页面呈现&#xff1a; Pass-01&#xff08;前端绕过&#xff09; 我们先尝试上传一个web.…

如何通过Postgres的日志进行故障排查?

文章目录 一、配置日志记录二、查看和分析日志三、使用日志进行故障排查的示例四、总结 在进行数据库管理和维护时&#xff0c;日志分析是一项至关重要的技能。PostgreSQL的日志记录功能可以帮助我们追踪数据库的运行状态&#xff0c;定位问题&#xff0c;以及优化性能。下面&a…