响应式开发HTML5CSS3实现视频播放器的功能案例

news2024/9/21 4:20:48

 目录

前言

一、本视频播放器需要实现的功能

​二、代码分布结构

三、部分主要代码

1.index01.html

2.video1.css

3.video1.js

四、images图片资源及视频

五、运行效果


前言

1.本文讲解的响应式开发技术(HTML5+CSS3+Bootstrap)的HTML5视频播放器等功能方法的代码,这也是很多教材的一个典型案例;

2.本文将讲解涉及到HTML5表单等功能方法的知识点,其它方面会大致讲一下;

3.本代码是使用visual Studio Code编写的,其他软件如DW,HBX等都是可以的;

4.运行浏览器是谷歌,同时推荐使用谷歌浏览器;

5.这个案例是我上学跟老师所讲做出来的,有些地方不是很完美,请见谅也请多赐教,若程序出现问题请指教,我在吸取经验、改正文档;

6.该博文代码及文件内容同步到了我的资源当中,有需要可以下载,直接导包使用;

7.这个是我上学跟老师所讲做出来的若侵权,请联系删除!


提示:以下是本篇文章正文内容,下面案例可供参考

响应式开发(HTML5 CSS3)视频播放器功能

上述视频为本文最终实现的效果 

一、本视频播放器需要实现的功能

1.显示播放、暂停,视频时长、进度条、全屏、单击进度条跳转视频等

2.触碰选择栏,颜色由浅变深的效果

2.1未触屏图示

2.2触碰图示

二、代码分布结构

仅供参考:

结构
文件名称二级结构三级结构
视频播放器案例cssvideo1.css
jsvideo1.js
jsjquery.min.js
imageszzzz,jpg
fonts

font-awesome.css

videoxcp.mp4
index01.html

三、部分主要代码

1.index01.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>视频播放器案例</title>
    <link rel="stylesheet" href="fonts/font-awesome.css">
    <link rel="stylesheet" href="css/video1.css">
</head>
<body>
    <figure>
        <figcaption>欢迎观看本视频!</figcaption>
        <div class="player">
            <video src="video/xcp.mp4"></video>
        <div class="controls">
            <a href="javascript:;" class="switch fa fa-play"></a>
            <div class="progress">
                <div class="line"></div>
                <div class="bar"></div>
            </div>
            <div class="timer">
                <span class="current">00:00:00</span>
                <span class="xg">/</span>
                <span class="total">00:00:00</span>
            </div>
            <a href="javascript:;" class="expand fa fa-arrows-alt"></a>
        </div>
    </div>
    </figure>
        <script src="js/jquery.min.js"></script>
        <script src="js/video1.js"></script>
</body>

</html>

2.video1.css

body{
    width: 100%;
    height: 100%;
    background: url(../images/zzzz.jpg);
    padding: 0;
    margin: 0;
    font-family: 宋体;
}
a{
    text-decoration: none;}
    figcaption{
    font-size: 24px;
    text-align: center;
    margin-top: 30px;
    margin-bottom: 20px;
}
video{display: none;
     height: 100%;
     margin: 0 auto;
}
.player{
    width: 1050px;
    height: 590px;
    margin: 0 auto;
    border-radius: 4px;
    position: relative;
}
.controls{
    width: 700px;
    height: 40px;
    background: #fff;
    border-radius: 4px;
    position: absolute;
    left: 50%;
    margin-left: -350px;
    bottom: 5px;
    opacity: 0.5;
}
.player:hover .controls{
opacity: 1;
}
.controls .switch{
    display: block;
    width: 20px;
    height: 20px;
    color: #f00;
    position: absolute;
    left:  11px;
    top: 11px;
}
.controls .expand{
    display: block;
    width: 20px;
    height: 20px;
    color: rgb(43, 0, 255);
    position: absolute;
    right: 11px;
    top: 11px;
}
.progress{
    width: 430px;
    height: 10px;
    border-right: 3px;
    overflow: hidden;
    background: #555;
    cursor: pointer;
    position: absolute;
    top: 16px;
    left: 45px;
}
.progress .line{
    width: 10px;
    height: 100%;
    background: #f00;
    position: absolute;
    left: 0px;
    top: 0px;
}
.progress .bar{
    width: 100%;
    height: 100%;
    opacity: 0;
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1;
}
.timer{
    height: 20px;
    line-height: 20px;
    position: absolute;
    left: 490px;
    top: 11px;
    color: #f00;
    font-size: 14px;
}

3.video1.js

var video = $("video").get(0); 

function formatTime(time) {
    var h = Math.floor(time / 3600);
    var m = Math.floor(time % 3600 / 60);
    var s = Math.floor(time % 60);
    return (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":" + (s < 10 ? "0" + s : s);

}

video.oncanplay = function () { 
    $("video").show(); 
    var totalTime = formatTime(video.duration);
    $(".total").html(totalTime);
}

$(window).resize(function () {
    if (!checkFull()) {
        $('.expand').addClass("fa-arrows-alt").removeClass('fa-compress')
    }
});

$(".switch").on("click", function () {

    if ($(this).hasClass("fa-play")) { 
        video.play(); 
        $(this).addClass('fa-pause').removeClass("fa-play"); 
    } else { 
        video.pause(); 

        $(this).addClass("fa-play").removeClass('fa-pause');

    }
})
$(".bar").on("click", function (event) {
    var offset = event.offsetX;
    var current = offset / $(this).width() * video.duration;
    video.currentTime = current;
})

$(document).keypress(function (event) {
    var code = (event.keyCode ? event.keyCode : event.which);
    if (video != "" && (code == 13 || code == 32)) {
        if (video.paused) {
            video.play();
            $('.switch').addClass('fa-pause').removeClass("fa-play");
        } else {
            video.pause();
            $('.switch').addClass('fa-play').removeClass("fa-pause");
        }
    }
});

video.ontimeupdate = function () {
    var w = video.currentTime / video.duration * 100 + "%";
    $(".line").css("width", w);
    $(".current").html(formatTime(video.currentTime));
}
$(".expand").on("click", function () {

    if ($(this).hasClass("fa-arrows-alt")) {

        $(".player").get(0).requestFullscreen();  
        $(this).addClass('fa-compress').removeClass("fa-arrows-alt");

    } else {
        document.exitFullscreen();
        $(this).addClass("fa-arrows-alt").removeClass('fa-compress');
    }
})

function checkFull() {
    var isFull = document.webkitIsFullScreen;
    if (isFull === undefined) {
        isFull = false;
    }
    return isFull;
}


 font-awesome.css和jquery.min.js这里就不提供了,因为这个文件的代码特别多,有需要请在网上或我的资源中下载,我会把这些代码及文件都发布到我的资源当中

四、images图片资源及视频

视频来源网络,我采用的是中国辽宁宣传片,这个可以根据自己的要求进行下载视频,并更改。

这里要特别说明,该视频来源网络,若涉及侵权,请联系删除!

五、运行效果

运行图片如下,仅供参考:

1.显示视频

响应式开发(HTML5 CSS3)视频播放器功能

2.显示效果

 3.播放效果

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

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

相关文章

随想录Day59--单调栈: 503.下一个更大元素II , 42. 接雨水

看到下一个更大&#xff0c;最先想到的就是单调栈。所以503.下一个更大元素II可以用单调栈的思路进行求解&#xff0c;其实这道题和496.下一个更大元素 I的思路是一样的&#xff0c;不过是多了一个首位相连的环状条件&#xff0c;这时候可以想到&#xff0c;把数组再复制遍历&a…

推荐系统|多目标建模|多目标优化|跨域多目标算法演进

目录 多目标建模总结 推荐系统——多目标优化 网易严选跨域多目标算法演进 背景介绍 多目标建模及优化 1.样本与特征 2. 模型结构迭代 3. 位置偏差与 Debias 4. 多目标 Loss 优化 5. 跨域多目标建模 多目标建模总结 http://t.csdn.cn/H514i 常见的指标有点击率CTR、…

电、气物联网联合管理监测方案

一、概述 水、电、气联合管理就是把同一个用户的用电计量和用水计量、用气计量统一到一个账户&#xff08;同时具有子账户&#xff09;&#xff0c;用一套软件进行统一管理&#xff0c;当账户余额不足时&#xff0c;可实行停电催费&#xff0c;从而既达到预付费的目的&#xff…

hue源码编译,替换cloudera manage hue,解决hue滚动条bug问题

一.安装依赖 yum install python python-dev python-setuptools python-pip \ libkrb5-dev libxml2-dev libxslt-dev libssl-dev \ libsasl2-dev libsqlite3-dev libldap2-dev \ libffi-dev nodejs npm cmake make gcc g++ 二.拉取源码 wget https://github.com/cloudera/hue/a…

机器学习笔记之K近邻学习算法

机器学习笔记之K近邻学习算法 引言回顾&#xff1a;投票法回顾&#xff1a;明可夫斯基距离 K \mathcal K K近邻算法算法描述 K \mathcal K K值的选择小插曲&#xff1a;懒惰学习与急切学习 KD \text{KD} KD树描述及示例 K \mathcal K K近邻 VS \text{ VS } VS 贝叶斯最优分类器…

汽车基础软件信息安全与AUTOSAR

AUTOSAR 信息安全框架和关键技术分析 随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。在这同时,汽车也慢慢成为潜在的网络攻击目标,汽车的网络安全已成为汽车安全的基础,受到越来越多的关注和重视。AUTOSAR 作为目前全球范围普遍认可的汽车嵌入式软件架…

HDFS FileSystem 导致的内存泄露

目录 一、问题描述 二、问题定位和源码分析 一、问题描述 ftp程序读取windows本地文件写入HDFS&#xff0c;5天左右程序 重启一次&#xff0c;怀疑是为OOM挂掉&#xff0c;马上想着就分析 GC日志了。 ### 打印gc日志 /usr/java/jdk1.8.0_162/bin/java \-Xmx1024m -Xms512m …

Net2FTP搭建免费web文件管理器『打造个人网盘』

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人存储文件资料&#xff0c;还是商业文件流转&#xff0c…

老杨说运维 | 数智时代,运维一体化如何落地实践?

在IT运维的发展过程中&#xff0c;随着分布式架构的加速推进&#xff0c;云原生技术加入应用&#xff0c;运维工具相比过去呈现出了更高强度的进化态势&#xff0c;即从多个相对独立的软件向EA形态的一体化系统进化。本次樱花论坛正是基于这一新的变革点&#xff0c;邀请了行业…

(十二)rk3568 NPU 中部署自己训练的模型,(2)模型转换

对于rknn 模型部署,本人使用*.pt -> *.onnx -> *.rknn的方式。 一、首先是pt文件到onnx文件的转换。 onnx文件导出时,需要修改models/yolo.py文件中的后处理部分。 注意:在训练时不要修改yolo.py的这段代码,训练完成后使用export.py进行模型导出转换时一定要进行修…

RHCE第六次作业

目录 一、编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如: test1、test2、test3、.....、 test10 1.创建脚本for1.sh 2.执行脚本并查看是否创建成功 二、编写脚本for2.sh,使用for循环,通过…

微积分:微分

目录 1.代数推导 2.几何推导 3.总结 1.代数推导 假设我们有一个正方形初始边长为X&#xff0c;这时面积S1x 然后正方形的边长增加△x&#xff0c;此时面积S2&#xff08;x△x&#xff09; 变化的面积大小是△s&#xff08;x△x&#xff09;- x2x△x&#xff08;△x&#x…

软件测试外包干了4年,感觉废了..

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

c++算法——枚举法

枚举概念 枚举法是通过计算机速度快的特点&#xff0c;对问题所有可能性进行枚举&#xff0c;从中找到答案&#xff0c;需要利用循环。 例题 1&#xff0c;简单数字谜 题目描述 在□内填上一个合适的相同的数字&#xff0c;使等式“□365283□8256”成立。 输入格式 无 输出…

5.2 构造数值积分公式的基本方法与有关概念

学习目标&#xff1a; 如果要学习构造数值积分公式的基本方法与有关概念&#xff0c;可以遵循以下步骤&#xff1a; 1.了解数值积分的基本概念和性质&#xff1a;包括积分的定义、积分的性质、数值积分的定义及其误差等。这可以通过课本或相关的学习资料来了解。 2.掌握构造…

ubuntu 安装vmware tool(优先安装最新ubantu,可以不安装vmware tools)

1在虚拟机种站到安装vmware-tools 然后重启虚拟机 2在磁盘中可以看到如下文件&#xff0c;将zip文件移动到桌面解压备用 3关闭虚拟机 找到编辑虚拟机设置 4点击左侧 CD/dvd(SATA) 如果是使用镜像文件&#xff0c;改成使用物理驱动器. 5 打开命令行 cd 桌面 &#xff08;如…

yara规则--构建yara规则库

零、快速构建yara规则库的方案 Yara官方预置的规则库&#xff0c;链接 https://github.com/Yara-Rules/rules ClamAV的特征码转换为yara规则&#xff0c;利用工具clamav_to_yara.py将clamav的特征码转换为yara规则 从yara-generator爬取别人上传的样本的规则 利用 yarGen工具 …

电容笔和触控笔有什么区别?2023平价好用的电容笔测评

无论是导电的材料&#xff0c;还是工作的原理&#xff0c;还是操作的方式&#xff0c;甚至是价格&#xff0c;电容笔都和一般的触控笔有着明显的区别。电容笔具有更小的笔尖&#xff0c;并且具有更好的耐磨性。而且现在科技进步很快&#xff0c;IPAD的市场也越来越大&#xff0…

【蓝桥杯省赛真题18】python阴影图形面积 青少年组蓝桥杯python编程省赛真题解析

目录 python阴影图形面积 一、题目要求 1、编程实现 2、输入输出

Linux-零拷贝及Java实现

RabbitMQ比RocketMQ、Kafka较慢点一点重要原因就是 零拷贝 什么是零拷贝&#xff1f; 零拷贝指的是在进行IO的时候减少或避免让CPU拷贝数据&#xff08;数据在IO缓冲区中进行拷贝&#xff09; 零拷贝的优点&#xff1a; 减少甚至完全避免不必要的CPU拷贝&#xff0c;从而让C…