使用html+js实现视频播放器

使用html+js实现视频播放器

新手第一次发CSDN,请多关照
今天我来整理一下视频播放器,主要是javaScript部分。
展示效果

首先是html部分(我这里只贴出关键部分,其他修饰网页的部分在末尾完整实现代码处贴出)

	<div id="player">
		<video id="video" src="###" controls="controls" autoplay="autoplay"></video>
		<div id="name">请选择视频</div>
		<div id="author"></div>
	</div>
	
	<div id="selector"></div>
	<div id="d" style="width: 0px; height: 0px;"></div>

接下来是css部分,这部分主要是播放框和影视选择框部分的位置等等
值得注意的是:因为视频选择框那里是动态生成的,所以我们用div/video等标签选择器来代表(当然也可以用calss等等:setAttribute(“class”,"…") ;)

#player{
	height: 80%;
	width: 55%;
	position: absolute;
	left: 5%;
	top: 15%;
	box-shadow: 5px 5px 10px 2px black ;
	-moz-box-shadow: 5px 5px 10px 2px black ;   		/* 老的 Firefox */
	background-color: white;
}
#player>#video{
	width: 100%;
	height: 82.3%;
	position: absolute;
	top: 0;
}
#player>#name{
	width: 100%;
	height: 15%;
	font-size: 30px;
	font-family: 华文行楷;
	position: absolute;
	top: 83%;
	overflow: auto;
	left: 1%;
}
#player>#author{
	width: 100%;
	height: 3%;
	font-size: 20px;
	font-family: 隶书;
	position: absolute;
	bottom: 2%;
	left: 2%;
}
		
#selector{
	overflow: auto;
	height: 85%;
	width: 30%;
	position: absolute;
	right: 3%;
	top: 12.5%;
	background-color: #2F4F4F;
}
#selector>div{			/*这是selector里每个选项框*/
	width: 100%;
	height: 31%;
	position: relative;
	padding: 2px 0px;
	border-bottom: 2px solid black;
}
#selector>div>video{	/*选项的视频*/
	width: 70%;
	position: relative;
	height: 100%;
	float: left;
}
#selector>div>div{		/*选项视频的名称*/
	 width: 28%;
	 height: 30%;
	 position: relative;
	 padding: 2px 1px;
	 top: 2%;
	 cursor: default;
	 float: right;
	 color: orange;
	 zIndex: 9999;
}

javascript部分

首先为<body标签加了个onload事件实行现init()方法,在init()方法内进行选择栏里选项的创建以及调用其他方法为选项增添属性事件

function init(){
	window.a=["战场-原样","钢铁侠始,钢铁侠终,爱你三千遍!十年终落幕,无悔","音乐Wu哥","《复联》英雄专属出场BGM,都帅得一塌糊涂,只有星爵像个傻子",
	"谷阿莫","【谷阿莫】5分钟看完2016动画电影《大鱼海棠》","轩龙鸽鸽","漫威踩点视频;让人相当舒服的踩点与衔接!","烟季",
	"动漫踩点视频;让世界感受这场视觉盛宴吧!","作者Ba1y","超英混剪辑","光影笔墨","全体起立!【进击的巨人最终季】中文预告终于来了,莱纳坐啊!",
	"`瞎剪君吴十三","【魁拔IV之最后的魁拔】2020档大电影预告 热血混剪","狗兔电影院","3分钟告诉你《大鱼海棠》讲什么?"];
	window.late=document.getElementById("d");		//创建一个全局变量late用于保存上次播放的电影
	window.late_1=document.getElementById("d");		//创建一个全局变量late_1用于保存上次悬浮的div
	for(window.i=1 ; i<10 ; i++){			//window.变量名:定义全局变量
		var video=document.createElement("video");		//创建一个电影并复制src
		video.src="./video/"+i+".mp4";
		d();
		text(window.a[i-1]);
		shipin(video);
	}
}
  • 我们创建一个全局数组a来存放视频的作者与名称
  • late用来存放用户上一次选中的视频,以便在用户选择下一个视频时将其的突出背景取消
  • late_1用来存放用户上一次鼠标悬浮的视频,以便在用户鼠标移动到下一个视频时将其的突出背景取消
  • 这里循环控制变量i定义成全局变量的原因,是为了在定义div选项的时候将其id赋值为i,以用于现实视频名称作者时准确找到数组的对应元素(描述的不好,直接看下面代码吧【尴尬】)
function d(){
	window.div=document.createElement("div");		//创建电影栏目div用于保存一个电影信息
	div.setAttribute("id",i);					//setAttribute() :方法添加指定的属性,并为其赋指定的值。
	document.getElementById("selector").appendChild(div);
	
	window.div.onmouseover=function(){			//鼠标悬浮事件
		if(this!=window.late)			//避免鼠标移到正在播放的电影栏目上时也改变背景色
			this.style.backgroundColor="cadetblue";
		window.late_1=this;
	}
	window.div.onmouseleave=function(){			//鼠标离开事件
		if(window.late!=window.late_1)	//避免在离开正在播放的电影栏目时也会恢复其背景色
			window.late_1.style.backgroundColor="transparent";
	}
}
  • 创建选项div,并为其创建鼠标悬浮/离开的事件与其内部方法
function shipin(video){
	window.div.appendChild(video);
	window.div.onclick=function(){				//电影栏目的onclick事件
		document.getElementById("video").src=video.src;
		window.late.style.backgroundColor="transparent";		//将前一个电影背景色恢复
		this.style.backgroundColor="#808080";					//将当前选中的电影背景色改变
		document.getElementById("name").innerHTML=a[this.id*2-1]; //动态改变视频名称
		document.getElementById("author").innerHTML=a[this.id*2-2];	//动态改变视频作者
		window.late=this;						//更新late变量
	}
}
  • 创建video的静态视频(因为没有autoplay也没有controls所以展示效果类似一张图片)
  • 在这里为div选项框创建爱你onclick事件是因为:这里要将其video的src地址传给播放器里的video,如果将此事件创建咋d()里边就会造成(不管选择哪个视频都是播放最后一个视频,因为初始化完了video变量指向的就是最后一个video对象了)
function text(map){
	var div2=document.createElement("div");				//电影的说明文字
	div2.innerHTML=window.a[i*2-1];
	window.div.appendChild(div2);
}
  • 最后是文字描述了,因为文字描述要在选线视频的后方,所以为了省事我就直接用div来装的文字描述
  • a数组每两个元素存放一个视频的信息(作者、视频名),所以这里同i*2-1即可找到视频名(i从1开始,下标从0开始)

到这里这个视频播放器就算是完成啦,当然我这里只是挂 上了主要样式,为了美观与大方伙伴们还可以自己加上些其他样式;

下面是完整实现代码(视频/图片src地址要根据自己文件夹位置稍加改动)

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="utf-8" />
	<title>two.html</title>
	
	<style type="text/css">
		body{
			background-color: rgb(32,177,212);
			width: 100%;
			height: 100%;
		}
		*{
			margin: 0px;
			padding: 0px;
		}
		#titleBar{
			background-color: #07cbc9;
			height: 10%;
			position: absolute;
			width: 100%;
			}
		
			#titleBar .logo{
			width: 4%;
			height: 85%;
			margin: 0.4% 0.8%;
			float: left;
			-webkit-transition: -webkit-transform 0.3s;
		}
		#titleBar .logo:hover{
			transform: scale(1.2,1.2);
		}
		
		#titleBar>.name{
			font-size: 40px;
			font-family: 华文新魏;
			margin: 0px 0.8%;
			line-height: 180%;
			float: left;
			background: linear-gradient(135deg,goldenrod 25%,blue 100%);								/*设置渐变背景,右下角方向,颜色25%开始*/
			-webkit-text-fill-color: transparent;
			-webkit-background-clip: text;
		}
		
		#titleBar>ul{
			float: right;
			list-style-type: none;
			width: 10%;
			margin-right: 5%;
		}
		#titleBar>ul li{
			text-align: center;
			width: 50%;
			float: left;
			font-size: 20px;
			font-family: 行楷;
			paddig: 0 5%;
			line-height: 350%;
			transition:font-weight 0.3s, color 0.3s, background-color 0.3s,transform 0.3s;
			-moz-transition:font-weight 0.3s, color 0.3s, background-color 0.3s,-moz-transform 0.3s;
			-webkit-transition:font-weight 0.3s, color 0.3s, background-color 0.3s,-webkit-transform 0.3s;
			-o-transition:font-weight 0.3s, color 0.3s, background-color 0.3s,-o-transform 0.3s;
		}
		#titleBar>ul li:hover{
			font-weight: bolder;
			color: white;
			background-color: darkslategray;
			transform: scale(1.1,1.1);
		}
		#titleBar>ul a{
			color: #000000;
			text-decoration: none;
		}
		
		#player{
			height: 80%;
			width: 55%;
			position: absolute;
			left: 5%;
			top: 15%;
			box-shadow: 5px 5px 10px 2px black ;
			-moz-box-shadow: 5px 5px 10px 2px black ;   		/* 老的 Firefox */
			background-color: white;
		}
		#player>#video{
			width: 100%;
			height: 82.3%;
			position: absolute;
			top: 0;
		}
		#player>#name{
			width: 100%;
			height: 15%;
			font-size: 30px;
			font-family: 华文行楷;
			position: absolute;
			top: 83%;
			overflow: auto;
			left: 1%;
		}
		#player>#author{
			width: 100%;
			height: 3%;
			font-size: 20px;
			font-family: 隶书;
			position: absolute;
			bottom: 2%;
			left: 2%;
		}
		
		#selector{
			overflow: auto;
			height: 85%;
			width: 30%;
			position: absolute;
			right: 3%;
			top: 12.5%;
			background-color: #2F4F4F;
		}
		#selector>div{			/*这是selector里每个选项框*/
			width: 100%;
			height: 31%;
			position: relative;
			padding: 2px 0px;
			border-bottom: 2px solid black;
		}
		#selector>div>video{	/*选项的视频*/
			width: 70%;
			position: relative;
			height: 100%;
			float: left;
		}
		#selector>div>div{		/*选项视频的名称*/
			 width: 28%;
			 height: 30%;
			 position: relative;
			 padding: 2px 1px;
			 top: 2%;
			 cursor: default;
			 float: right;
			 color: orange;
			 zIndex: 9999;
		}
	</style>
	
	<script type="text/javascript">
		function init(){
			window.a=["战场-原样","钢铁侠始,钢铁侠终,爱你三千遍!十年终		落幕,无悔","音乐Wu哥","《复联》英雄专属出场BGM,都帅得一塌糊涂,只有星爵像个傻子",
	"谷阿莫","【谷阿莫】5分钟看完2016动画电影《大鱼海棠》","轩龙鸽鸽","漫威踩点视频;让人相当舒服的踩点与衔接!","烟季",
	"动漫踩点视频;让世界感受这场视觉盛宴吧!","作者Ba1y","超英混剪辑","光影笔墨","全体起立!【进击的巨人最终季】中文预告终于来了,莱纳坐啊!",
	"`瞎剪君吴十三","【魁拔IV之最后的魁拔】2020档大电影预告 热血混剪","狗兔电影院","3分钟告诉你《大鱼海棠》讲什么?"];
			window.late=document.getElementById("d");		//创建一个全		局变量late用于保存上次播放的电影
			window.late_1=document.getElementById("d");		//创建一个全局变量late_1用于保存上次悬浮的div
			for(window.i=1 ; i<10 ; i++){			//window.变量名:定义全局变量
				var video=document.createElement("video");		//创建一个电影并复制src
				video.src="./video/"+i+".mp4";
				d();
				shipin(video);
				text(window.a[i-1]);
			}
		}

		function d(){
			window.div=document.createElement("div");		//创建电影栏目div用于保存一个电影信息
			div.setAttribute("id",i);					//setAttribute() :方法添加指定的属性,并为其赋指定的值。
			document.getElementById("selector").appendChild(div);
	
			window.div.onmouseover=function(){			//鼠标悬浮事件
				if(this!=window.late)			//避免鼠标移到正在播放的电影栏目		上时也改变背景色
					this.style.backgroundColor="cadetblue";
				window.late_1=this;
			}
			window.div.onmouseleave=function(){			//鼠标离开事件
				if(window.late!=window.late_1)	//避免在离开正在播放的电影栏目时也会恢复其背景色
					window.late_1.style.backgroundColor="transparent";
			}
		}

		function shipin(video){
			window.div.appendChild(video);
			window.div.onclick=function(){				//电影栏目的		onclick事件
				document.getElementById("video").src=video.src;
				window.late.style.backgroundColor="transparent";		//将前一个电影背景色恢复
				this.style.backgroundColor="#808080";					//将当前选中的电影背景色改变
				document.getElementById("name").innerHTML=a[this.id*2-1]; //动态改变视频名称
				document.getElementById("author").innerHTML=a[this.id*2-2];	//动态改变视频作者
				window.late=this;						//更新late变量
			}
		}

		function text(map){
			var div2=document.createElement("div");				//电影的说明文字
			div2.innerHTML=window.a[i*2-1];			//a数组每两个元素存放一个视频的信息(作者、视频名),所以这里同i*2-1即可找到视频名(i从1开始,下标从0开始)
			window.div.appendChild(div2);
		}
	</script>
	
</head>

<body onload="init()">
	<h1 style="text-indent: -9999"></h1>
	<div id="titleBar">
		<a href="logo.jpg" target="_blank"><img class="logo" src="./video/logo.jpg" /></a>
		<p class="name">大雄影视</p>
		<ul>
			<a href="one.html"><li style="cursor: default">注销</li></a>
			<a href="./video/help.txt"><li style="cursor: help">帮助</li></a>
		</ul>
	</div>
	
	<div id="player">
		<video id="video" src="###" controls="controls" autoplay="autoplay"></video>
		<div id="name">请选择视频</div>
		<div id="author"></div>
	</div>
	
	<div id="selector"></div>
	<div id="d" style="width: 0px; height: 0px;"></div>		<!--定义一个空的div是为了js里面为对象变量初始化哈哈哈哈-->
</body>
</html>
  • 26
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
ckplayer是一款在网页上播放视频的免费的播放器,功能强大,体积小巧,跨平台,使用起来随心所欲。 <p>CKplayer播放器主要以adobe的flash(所使用的版本是CS5)平台开发,所以在支持flash插件的平台和浏览器上都可以使用,而无需下载其它插件,如果你需要修改完整版里提供的相关的flash源文件,请使用adobe的flash cs5以上版本打开源文件修改。</p><p>ckplayer同时也支持html5的视频播放,即同时可以在Ipad,Iphone等IOS平台上播放视频,并且只需简单代码就可以使用,无需了解html5插入视频的方法。</p><p>软件在对各平台的兼容性方面适应性比较强,比如你可以设置在Android平台或wp平台上在用户已安装flash插件的时候使用flash播放器,在没有装flash插件的情况下使用html5播放器。</p><p>ckplayer是一种前台使用的程序,不涉及到服务器程序(asp,php,jsp,.net),也不涉及到对服务器的操作(即不需要写入权限),所以不存在安全方面的问题。同时可以集成在任何程序中,包括asp,php,jsp,.net以及其它支持插入flash的环境中。</p><p>功能列表:</p><p>兼容SWF/HTML5跨平台播放</p><p>支持流行视频格式flv,f4v,mp4,</p><p>支持html5格式m3u8,webm,ogg theora,mp4</p><p>支持RTMP协议下的视频直播和回放</p><p>支持前置广告(swf,图片,视频)</p><p>支持前置广告多个随机/顺序播放</p><p>支持暂停广告(swf,图片)多个随机播放</p><p>支持缓冲广告,小窗口广告,滚动文字广告</p><p>支持多达6种形式的视频地址调用方式</p><p>支持多段视频无缝播放,支持多集连播</p><p>支持视频预览功能</p><p>自定义提示点功能,跳过片头片尾功能</p><p>bshare完美视频分享功能</p><p>调节视频尺寸,亮度,对比度,色相,饱和度功能</p><p>支持播放结束显示精彩视频推荐</p><p>支持自定义播放器界面,无需了解程序,即可自己制作出风格</p><p>支持js和播放器的互动操作,可以任意控制播放器的动作,比如暂停/播放</p><p>丰富的api接口,快速打造功能强大的插件</p><p> </p><p>CKplayer-超酷网页视频播放器 v6.8 更新日志: </p>一:修复Bug 1:修复了已知的bug 2:修正了html5中监听time的错误 3:新加了几个交互函数 4:风格设置里增加了提示文本底色及圆角的功能 二:增加功能 1:增加了全屏模式下启用键盘输入的功能,设置方法分二步:调用代码var flashvars={}里增加fs:'1',以及var params={}里增加allowFullScreenInteractive:true 2:增加了在播放器内显示文本元件的功能。 3:增加了新的调用视频地址的方式:json调用。 感谢各位朋友对ckplayer的支持,在本次升级中,许多朋友提供了好的建议,虽然因为考虑到大部分用户的需求后决定一些功能没有对其进行更改。 6.7升级至6.8的方法 1:替换ckplayer.swf 2:替换ckplayer.js中的315行((function() {)及以下的所有内容 3:ckplayer.js中setup属性的第21个值在正式使用时设置成0 4:language.xml里增加了控制提示文字的样式:{font color='#FFFFFF' face='Microsoft YaHei' size='16'}[$prompt]{/font} 5:languae.xml里增加了新版默认风格里的设置的提示文本样式:{font color='#FFFFFF' face='Microsoft YaHei,\u5fae\u8f6f\u96c5\u9ed1' size='14'}设置{/font} (也可以直接替换掉languae.xml) 6:如果要使用新的风格,需要替换掉目前的style.swf,并同时删除ckplayer.js中和ckplayer.xml中安装的插件代码。详细的可以对照新的ckplayer.js中的: function ckcpt() {   var cpt = '';   return cpt; } 以及ckplayer.xml中的的节点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryMyBestTo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值