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

在这里插入图片描述

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 方法以及事件支持,使得开发者可以轻松地在网页中嵌入视频内容,并对其进行精细控制和交互处理。通过合理运用这些功能,可以创建出具有良好用户体验的多媒体网页。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

树莓派驱动开发--iic篇(JY901S陀螺仪的三轴角度简单读取)

前言&#xff1a;既然大家都到了这步&#xff0c;想必对驱动开发有着一定的理解啦吧&#xff01;&#xff01;那我在前面说一下流程&#xff1a; 修改编译设备树》》》编写编译驱动文件》》》编写编译app文件》》》ftp挂载将前面3复制到树莓派的对应位置》》》加载驱动模块》》…

代码随想录训练营Day 24|Python|Leetcode|93.复原IP地址, 78.子集,90.子集II

93.复原IP地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址&#xff0c;但是 &q…

✌粤嵌—2024/4/3—合并K个升序链表✌

代码实现&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…

【Android GUI】从总体上了解Android的GUI体系

文章目录 概览Android硬件接口HALGralloc与Framebuffer Gralloc模块的加载Gralloc提供的接口Android原生的Gralloc实现打开framebuffer设备打开gralloc设备 参考 概览 Linux内核提供了统一的framebuffer显示驱动。设备节点/dev/graphics/fb*或者/dev/fb*&#xff0c;其中fb0表示…

MySQL-变量、流程控制与游标:变量、定义条件与处理程序、流程控制

变量、流程控制与游标 变量、流程控制与游标1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 对比会话用户变量与局部变量 2. 定义条件与处理程序2.1 案例分析2.2 定义条件2.3 定义处理程序2.4…

go限流、计数器固定窗口算法/计数器滑动窗口算法

go限流、计数器固定窗口算法/计数器滑动窗口算法 一、问题 问题1&#xff1a;后端接口只能支撑每10秒1w个请求&#xff0c;要怎么来保护它呢&#xff1f; 问题2&#xff1a;发短信的接口&#xff0c;不超过100次/时&#xff0c;1000次/24小时&#xff0c;要怎么实现&#xff…

一分钟举例了解AI智能客服机器人的具体应用

AI智能客服机器人广泛应用于多个领域&#xff0c;充斥着我们生活的方方面面。在电商领域、银行业、电信行业、政府机构、教育机构、医疗机构等也借助AI智能客服机器人提供咨询、答疑等服务。但是具体是怎么应用到这些场景的呢&#xff1f;今天就用HelpLook的AI智能机器人的具体…

IMU是什么和IMU工作原理

陀螺仪和加速度计是IMU的主要部件&#xff0c;其精度直接影响惯性系统的精度。在实际工作中&#xff0c;由于各种不可避免的干扰因素&#xff0c;陀螺仪和加速度计会产生误差。从初始对准开始&#xff0c;其导航误差随着时间的推移而增大&#xff0c;尤其是位置误差&#xff0c…

JavaScrip 在主窗口打开浏览器子窗口时,监听子窗口开启与关闭,可在主窗口关闭子窗口

需求 vue项目&#xff0c;需要打开浏览器子窗口&#xff0c;并且要监听子窗口的刷新与关闭&#xff0c;如果子窗口刷新&#xff0c;主窗口需要自动关闭子窗口。主窗口关闭子窗口一起关闭。 解决思路 看看官方给的思路 在Vue中&#xff0c;如果你想关闭当前浏览器标签页&…

计算机体系架构

冯诺依曼架构 我们编写的程序存储在哪里呢&#xff1f;CPU内部的结构其实很简单&#xff0c;除了ALU、控制单元、寄存器和少量Cache&#xff0c;根本没有多余的空间存放我们编写的代码&#xff0c;我们需要额外的存储器来存放我们编写的程序&#xff08;指令序列&#xff09;。…

Android 自定义SwitchPreference

1. 为SwitchPreference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

MyBaties-plus 小蓝鸟 构造器 QueryWrapper 知识学习汇总

一、QueryWrapper是什么&#xff1f; QueryWrapper 是 mybatis-plus 条件构造器 https://mp.baomidou.com 小蓝鸟官方网址 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做…

数字展览会如何重塑展览业的可持续发展与互动体验?

随着数字技术的飞速发展&#xff0c;数字展览会已成为全球展览行业的一个重要趋势&#xff0c;它为参展商和观众提供了全新的交流与展示平台。这种展览形式不仅提高了展览的可访问性和互动性&#xff0c;而且显著降低了参与成本&#xff0c;对未来展览会的发展具有重要的推动作…

初始ansible变量及实例配置

目录 1、为什么要使用变量 2、变量分类 3、 变量详解 3.1 vars,vars_files , group_vars 3.1 .1 vars 剧本中定义变量 3.1.2 vars_file 将变量存放到一个文件中&#xff0c;并在剧本中引用 3.1.3 group_vars 创建一个变量文件给某个组使用 实例1-根据不同的主机…

【【相机运动】_Camera_shake镜头晃动动画】

【相机运动】:Camera shake镜头晃动动画 2022-07-20 20:28 评论(0)

压缩感知(ISTA-Net论文)学习笔记

压缩感知&#xff08;ISTA-Net论文&#xff09;学习笔记 第一天&#xff0c;主要查找相关视频和笔记&#xff0c;补全预备知识 【nabla算子】与梯度、散度、旋度_哔哩哔哩_bilibili 近端梯度(Proximal Gradient)下降算法的过程以及理解|ISTA算法|LASSO问题_哔哩哔哩_bilibil…

Weakly Supervised Audio-Visual Violence Detection 论文阅读

Weakly Supervised Audio-Visual Violence Detection 论文阅读 摘要III. METHODOLOGYA. Multimodal FusionB. Relation Modeling ModuleC. Training and Inference IV. EXPERIMENTSV. CONCLUSION阅读总结 文章信息&#xff1a; 发表于&#xff1a;IEEE TRANSACTIONS ON MULTIME…

IP定位技术在解决广告恶意点击问题中的应用

随着互联网的迅猛发展&#xff0c;数字广告已成为企业推广产品和服务的重要方式。然而&#xff0c;随之而来的是广告恶意点击的问题&#xff0c;这不仅导致广告主的损失&#xff0c;也影响了广告生态的健康发展。为了解决这一问题&#xff0c;IP定位技术应运而生&#xff0c;成…

算法学习——LeetCode力扣补充篇9(912. 排序数组、21. 合并两个有序链表、33. 搜索旋转排序数组、103. 二叉树的锯齿形层序遍历)

算法学习——LeetCode力扣补充篇9 912. 排序数组 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5] 示例 2&…

转换为elementUI提示方法为uni-app的showToast提示

// 转换为elementUI提示方法为uni-app的showToast提示---------------------------------------- // 一般提示 Vue.prototype.$message function(title) {title && uni.showToast({icon: none,title}); }; // 成功提示 Vue.prototype.$message.success (title) > …