首页 前端知识 前端提高篇(六十五):HTML5练习1:个性音乐播放器

前端提高篇(六十五):HTML5练习1:个性音乐播放器

2024-04-21 10:04:39 前端知识 前端哥 26 942 我要收藏

var oAudio = document.getElementById(‘audio’),

ocurrentTime = document.getElementsByClassName(‘current-time’)[0],

oallTime = document.getElementsByClassName(‘all-time’)[0];

oAudio.oncanplay = function() {

oallTime.innerHTML = coverTime(this.duration);

ocurrentTime.innerHTML = ‘00:00’;

}

//调整时间为xx:xx格式

function coverTime(t){

var sec = parseInt(t % 60) < 10 ? ‘0’+parseInt(t % 60) : parseInt(t % 60);

var min = parseInt(t / 60) < 10 ? ‘0’+parseInt(t / 60) : parseInt(t / 60);

return min + ‘:’ + sec;

}

在这里插入图片描述

2.面板左边的暂停播放效果

var oBtn = document.getElementsByClassName(‘btn’)[0],

oIsPlay = oBtn.getElementsByClassName(‘iconfont’)[0];

oBtn.onmouseup = function(){

if (oAudio.paused) {

oAudio.play();

oIsPlay.className = ‘iconfont icon-zanting_huaban’;

}

else {

oAudio.pause();

oIsPlay.className = ‘iconfont icon-bofang’;

}

}

图标名称以iconfont给的html里标注的为准

3.面板中间的进度条随时间前移

在计时器中需要使用总时长来计算当前进度条的width,不必要每次计时器工作都要获取一次duration,所以在oncanplay时,获取一次,并赋值给全局变量即可

刷新的时候pro-activate宽度为0,radio在进度条的最左边,

之前我把radio设置在.radio-box的右边,把.radio-box设置在白色条右边,当白色条宽度为0时,.radio-box会在pro-box最左边,且没有和pro-box重合,所以应该把radio-box往右移8px(radio的直径),进度条行走的路程应该是pro-box的宽-8px;

在这里插入图片描述

在这里插入图片描述

.radio-box {

width: 20px;

height: 20px;

position: absolute;

right: -8px;

top: -9px;

background: rgba(0,255,0,0.2);

}

var timer,

duration,

bgWid = oBg.offsetWidth - 8;/圆点走的最长长度/

oBtn.onmouseup = function(){

if (oAudio.paused) {

oAudio.play();

oIsPlay.className = ‘iconfont icon-zanting_huaban’;

timer = setInterval(movePro, 1000);

}

else {

oAudio.pause();

oIsPlay.className = ‘iconfont icon-bofang’;

clearInterval(timer);

}

}

function movePro() {

var currentTime = oAudio.currentTime;

var w = currentTime / duration * bgWid;/当前播放时间/总时长=当前宽度/总路径长度/

ocurrentTime.innerHTML = coverTime(currentTime);

// console.log(currentTime,duration,w);

oproActivate.style.width = w + ‘px’;

}

刷新时:

在这里插入图片描述

音频播放结束时:

在这里插入图片描述

这里有一个问题,当点击暂停,然后又开始播放时,时间可能会对不上,从7s直接到9s,中间的8被跳过了,没显示出来,

图中第一个参数是当前时间,第二个是总时长,最后一个是计算的当前宽度,

而且,时间并不是1s的整数,说明计数器并不是特别准确,

在这里插入图片描述

所以我们可以把采样时间缩小一些,获取的间隔短一些,就不会错过时间了

4.设置循环播放,当播放到最后时,暂停,当前时间改为0,activate宽度改成0,重新开始播放

为了提高代码的复用性,把之前写的暂停和播放的代码封装成musicPlay和musicPause函数

oAudio.onended = function(){

musicPause();

oAudio.currentTime = 0;

oproActivate.style.width = 0;

musicPlay();

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

==
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

获取:vip1024c (备注前端)**
[外链图片转存中…(img-cCdLFCyM-1712011389017)]

最后

==
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/5642.html
标签
评论
发布的文章

CSS(8)空间转换 动画

2024-04-29 12:04:29

CSS介绍(4)--背景属性

2024-04-29 12:04:26

Web学习记录---CSS(1)

2024-04-29 12:04:17

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!