,,JavaScript实现网页播放器

,,JavaScript实现网页播放器

对齐-项目:居中;

边框-底部:1px纯白;

框大小:边框-框;

}

/*设置内容部分*/。正文{

flex:7;

/*超出部分隐藏*/

溢出-x:隐藏;

}

/*设置底部部分*/。脚{

flex:2;

显示器:flex

背景:# 3498db

颜色:# fff

字体大小:14px

边框顶部:1px纯白;

框大小:边框-框;

}

/*设置每一首歌曲的格式*/。项目{

显示器:flex

高度:50px

行高:50px

背景:# 3498db

颜色:# fff

字体大小:14px

光标:指针;

过渡:全。5s;

}

/*除了最后一首歌曲其他歌曲都显示下边框*/。item:not(:last-child) {

边框-底部:1px纯白;

}

/*设置歌曲播放时的小图标的背景颜色*/。方框11 {

背景:# f0f0f0

}

/*设置歌曲信息*/。项目名称{

flex:6;

/*不挨着边框写*/

填充:0 10px

}

/*鼠标悬停的效果*/。项目:悬停{

背景:# 2980b9

}

/*鼠标点击的效果*/。项目:活动{

/*点击事件想要立体效果可以加盒子阴影,相对定位*/

位置:相对;

top:2px;

左:2px

方框阴影:5px 5px 10px rgba(0,0,0,5);

}

/*设置上一首/播放、暂停/下一首的图标的占据大小*/。方框1 {

flex:3;

显示:内嵌-块;

}

/*设置歌曲播放的当前时间的占据大小*/。方框2 {

flex:1;

显示:内嵌-块;

填充:50px 0;

文本对齐:左对齐;

}

/*设置歌曲播放的进度和歌曲名的占据大小*/。方框3 {

flex:5;

显示:内嵌-块;

位置:相对;

填充:35px 0;

}

/*设置歌曲播放的总时间的占据大小*/。方框4 {

flex:1;

显示:内嵌-块;

填充:50px 0;

文本对齐:右对齐;

}

/*分配上一首/播放、暂停/下一首的图标大小*/。方框1 a {

显示:内嵌-块;

边距:50px 0;

宽度:30%;

身高:50%;

}

/*设置上一首的图标*/。btn-pre {

背景:url('./imgs/pre-default.png ')不重复;

光标:指针;

}

/*设置上一首的图标鼠标悬停效果*/。BTN-前:悬停{

背景:url('./imgs/pre-active.png ')不重复;

}

/*设置播放的图标*/。BTN-播放{

背景:url('./imgs/play-default.png ')不重复;

光标:指针;

}

/*设置播放的图标鼠标悬停效果*/。BTN-播放:悬停{

背景:url('./imgs/play-active.png ')不重复;

}

/*设置暂停的图标*/。BTN-暂停

背景:url('./imgs/pause-default.png ')不重复;

光标:指针;

}

/*设置暂停的图标鼠标悬停效果*/。暂停:悬停{

背景:url('./imgs/pause-active。png’)不重复;

}

/*设置下一首的图标*/。BTN-下一个{

背景:url('./imgs/next-default.png ')不重复;

光标:指针;

}

/*设置下一首的图标鼠标悬停效果*/。BTN-下一个:悬停{

背景:url('./imgs/next-active.png ')不重复;

}

/*设置歌曲名的字体*/。m-name {

字体:20px '楷体;

}

/*设置歌曲播放总进度*/。方框31 {

位置:绝对;

宽度:100%;

高度:2px

背景:#卡卡卡

z指数:1;

}

/*设置歌曲播放当前进度*/。方框32 {

位置:绝对;

宽度:20%;

高度:2px

背景:白色;

z指数:2;

}

/*跟着歌曲播放当前进度一起动的小圆点*/。点{

位置:绝对;

显示:内嵌-块;

右:0;

top:-2px;

高度:5px

宽度:5px

边框半径:2.5像素;

背景:# fff

}

网页结构布局:因为播放图标和暂停图标点击要交替变化,而且这些图标是当作背景显示的,我们可以只改变a标签的背景就行,就是点击时换一个背景(换背景的方法是换一个类).设置歌曲播放进度时可以看一下声音的中的一些事件已加载数据,时间更新,已结束.用结束可以实现:自动播放下一首歌曲的功能。在设置前进和后退的功能时注意要获取鼠标点击的位置(就是距离开始的距离)。通过给player.currentTime设置值可以改变歌曲进度。

//创建一个播放器数字正射影像图对象

var player=文档。createelement(' audio ');

//设置一个值保存当前播放歌曲的索引

var当前指数=0;

//设置一个标记判断歌曲是否播放

var isPlay=false

//动态加载歌曲

(函数(){

//设置一个值保存所有歌曲数字正射影像图对象

var html=

//获取所有歌曲的数字正射影像图对象

for(var I=0;音乐长度;i ) {

var m=musics[I];

//设置每一首歌曲的格式

html=' div class=' item ' data-index=' $ { I } '

div class='item-logo box11'/div

div class=' item-name ' $ { m . name }-$ { m . artist }/div

/div ` 1

}

//添加所有歌曲

document.getElementById('tbody ').innerHTML=html

//给播放器一个默认的播放地址

玩家。src=musics[当前索引]。路径;

})();

//为每一首歌曲设置点击事件

var TRS=文档。查询选择器全部(.项目)

对于(设I=0;长度{

trs[i].addEventListener('click ',function () {

//清除上一首歌曲的播放状态

清除状态();

//获取歌曲索引

var指数=这个。数据集。指数;

当前索引=索引;

var MSC=musics[index];

//给播放器设置的播放地址

玩家。src=MSC。路径;

//开始播放

启动播放器();

})

}

//函数:开始播放

函数startPlayer() {

//设置播放标记

isPlay=true

//播放歌曲

玩家。play();

TRS[当前索引]。风格。background=' # 2980 B9

//添加播放歌曲的小图标

当前索引querySelector(.项目标志).innerHTML=' img src=' imgs/playing。gif ';

//设置图标为播放状态

文档。查询选择器(“BTN播放”).'暂停;

//设置歌曲名

文档。查询选择器(# playing Mae).innerText=` $ { musics[当前索引].name} - ${musics[currentIndex].艺术家} `;

}

//函数:清除上一首歌曲的播放状态

函数clearStatus() {

TRS[当前索引]。风格。背景=“”;

当前索引querySelector(.项目标志).innerHTML=

}

//函数:暂停播放

函数pausePlay() {

//暂停播放

玩家。pause();

//设置播放标记

isPlay=false

//设置图标为暂停状态

文档。getelementbyid(“BTN戏”).'播放;

}

//函数:实现上一首歌曲功能的点击事件

document.querySelector(' .BTN大学预科).addEventListener('click ',function () {

//暂停播放

暂停播放();

//清除上一首歌曲的播放状态

清除状态();

//实现上一首歌曲功能

if (currentIndex==0) {

当前索引=音乐。长度-1;

}否则{

-当前索引;

}

console.log(currentIndex)

//给播放器设置的播放地址

玩家。src=musics[当前索引]。路径;

启动播放器();

})

//函数:实现播放歌曲功能的点击事件

文档。getelementbyid(“BTN戏”).addEventListener('click ',function () {

//通过判断播放标志

if (isPlay) {

暂停播放();

}否则{

启动播放器();

}

})

//函数:实现下一首歌曲功能的点击事件

document.querySelector(' .BTN——下一个’).addEventListener('click ',function () {

暂停播放();

清除状态();

if(当前索引==音乐。长度-1){

当前索引=0;

}否则{

currentIndex

}

console.log(currentIndex)

玩家。src=musics[当前索引]。路径;

启动播放器();

})

//设置歌曲播放进度

定义变量现在=0;

var total=0;

//歌曲数据加载完后的事件

玩家。addevent侦听器(' loaded data ',function () {

//歌曲当前的进度(时间)

现在=player.currentTime

//歌曲总的进度(时间)

总计=玩家.持续时间

//把歌曲进度(时间)显示到播放器上

document.querySelector(' .播放-当前)。innerText=fmtTime(现在);

document.querySelector(' .播放持续时间)。innerText=fmtTime(总计);

})

//当当前时间(歌曲当前进度时间)更新时会触发时间更新事件

玩家。addevent侦听器('时间更新',函数(){

//获取歌曲当前的进度(时间)

现在=player.currentTime

//歌曲当前的进度

var p=现在/总计* 100% ';

//把歌曲当前的进度同步到进度条上

文档。查询选择器('。方框32’)。风格。宽度=p;

document.querySelector(' .播放-当前)。innerText=fmtTime(现在);

})

//歌曲结束事件(自动播放下一首歌曲的功能)

player.addEventListener('ended ',function () {

//清除上一首歌曲的播放状态

清除状态();

//播放下一首歌曲

currentIndex

if(当前索引=音乐。长度){

当前索引=0;

}

玩家。src=musics[当前索引]。路径;

启动播放器();

})

//前进歌曲事件

document.querySelector('.box31 ').addEventListener('click ',函数(e) {

//获取鼠标点击的位置

let right=e.offsetX

//设置进度条到鼠标点击的位置

文档。查询选择器('。方框32’)。风格。宽度=右;

//计算鼠标点击的位置歌曲的进度

设seek to=right/200 * total;

//设置歌曲的进度

玩家。当前时间=寻道时间;

})

//后退歌曲事件

document.querySelector('.box32 ').addEventListener('click ',函数(e) {

left=e.offsetX

文档。查询选择器('。方框32’)。风格。宽度=左;

设寻道=左/200 *总计;

玩家。当前时间=寻道时间;

})

//函数:格式化时间

函数fmtTime(时间){

时间*=1000;

时间=新日期(时间);

var m=时间。get minutes();

var s=时间获取秒数();

m=m 10?0 ' m:m;

s=s 10?0的:s;

返回m ':' s;

}

音乐:

var musics=[

{

艺人:“联欢晚会”,

id: 1,

名称: '追梦赤子心,

路径:" musics/1.mp3 "

},

{

'艺术家: '筷子兄弟,

id: 2,

名称: '父亲,

路径:" musics/2.mp3 "

},

{

'艺术家: '丁当,

id: 3,

名称: '手掌心,

路径:"音乐/3.mp3 "

},

{

'艺术家: '佐木李子,

id: 4,

姓名:"晚安",

路径:"音乐/4.mp3 "

},

{

'艺术家: '张韶涵,

id: 5,

名称: '隐形的翅膀,

路径:“musics/5.mp3”,

},

{

'艺术家: '杨丞琳,

id: 6,

名称: '雨爱,

路径:' musics/6.mp3 ',

},

{

'艺术家: '耀乐团,

id: 7,

名称: '流星,

路径:“musics/7.mp3”,

},

{

'艺术家: '逃跑计划,

id: 8,

名称: '再飞行(MV版)',

路径:' musics/8.mp3 ',

},

{

'艺术家: '金贵晟,

id: 9,

名称: '虹之间,

路径:' musics/9.mp3 ',

}

]

大家学了jQuery和一些框架之后上面的一些东西就可以用jQuery和框架来写,那样比较方便。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: