简单介绍

起初在简书上发现了这篇博客——【html、css、jq】制作一个简洁的音乐播放器。这是一个用jQuery库实现的音乐播放器,界面简约大气。

我在这个基础上,反其道而行,使用原生JavaScript实现。这个播放器是面向移动端的设备。在此感谢饥人谷和张新望,有了他们开路,使用原生的JS实现起来也并不费力。

音乐是通过豆瓣FM的API获取到的

界面类似于网易云音乐的样子

播放器的界面

怎么样,样式还可以吧?比较简单,最下面是可以操作的进度条和按钮,按钮从左至右依次是“显示歌词/隐藏歌词”、“切换频道”、“播放/暂停”、“下一曲”、“随机播放/单曲循环”。只有下一曲,没有上一曲,而且你永远不知道下一曲是啥,所以title就用了“与喜欢的音乐不期而遇”。

HTML部分

与喜欢的音乐不期而遇

![](img/pic.jpg)

页面主要分为三部分,最上面的歌名和歌手名,中间的唱片和歌词,下面的操作面板,最下方,class为glass的div和img是整个页面的背景。

CSS部分

JavaScript部分

js目录结构

这里面使用了一个flexible.js文件。这是rem布局(所以css文件里有好多单位是rem)为了多终端适配而增加的一个库。了解更多

还使用了一个original_ajax.js文件,封装一个ajax方法,用来发送Ajax请求

先把页面滚动禁掉(index.js)

//取消body的touchmove默认行为,阻止页面滚动

document.body.addEventListener('touchmove', function (event) {

event.preventDefault();

}, false);

original_ajax.js

/* 封装ajax函数

* @param {string}opt.type http连接的方式,包括POST和GET两种方式

* @param {string}opt.url 发送请求的url

* @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的

* @param {object}opt.data 发送的参数,格式为对象类型

* @param {function}opt.success ajax发送并接收成功调用的回调函数

*/

function ajax(opt) {

opt = opt || {};

opt.method = opt.method.toUpperCase() || 'POST';

opt.url = opt.url || '';

opt.async = opt.async || true;

opt.data = opt.data || null;

opt.success = opt.success || function () {};

var xmlHttp = null;

if (XMLHttpRequest) {

xmlHttp = new XMLHttpRequest();

}

else {

xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');

}

var params = [];

for (var key in opt.data){

params.push(key + '=' + opt.data[key]);

}

var postData = params.join('&');

if (opt.method.toUpperCase() === 'POST') {

xmlHttp.open(opt.method, opt.url, opt.async);

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');

xmlHttp.send(postData);

}

else if (opt.method.toUpperCase() === 'GET') {

xmlHttp.open(opt.method, opt.url + '?' + postData, opt.async);

xmlHttp.send(null);

}

xmlHttp.onreadystatechange = function () {

if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {

opt.success(xmlHttp.responseText);

}

};

}

获取频道和歌曲

// 获取频道

function getChannel () {

ajax({

method: 'GET',

async: false,

url: 'http://api.jirengu.com/fm/getChannels.php',

success: function (response) {

var jsonObj = JSON.parse(response);

channelArr = jsonObj['channels'];

getRandomChannel(channelArr);

getMusic();

}

});

}

// 获取随机频道

function getRandomChannel (channelArr) {

var randomNum = Math.floor(channelArr.length * Math.random());

var randomChannel = channelArr[randomNum];

channel.innerHTML = randomChannel.name;

channel.setAttribute('data-channel-id', randomChannel.channel_id);

}

// 获取音乐

function getMusic () {

ajax({

method: 'GET',

url: 'http://api.jirengu.com/fm/getSong.php',

data: {

"channel": channel.getAttribute("data-channel-id")

},

success: function (response) {

var jsonObj = JSON.parse(response);

var songObj = jsonObj['song'][0];

songTitle.innerHTML = songObj.title;

singer.innerHTML = songObj.artist;

recordImg.src = songObj.picture;

bigBg.src = songObj.picture;

musicAudio.src = songObj.url;

musicAudio.setAttribute('data-sid', songObj.sid);

musicAudio.setAttribute('data-ssid', songObj.ssid);

musicAudio.play();

isLoading = false;

getlyric();

// 解决首次进入页面时,自动播放的兼容问题,不自动播放

if (num === 1) {

musicAudio.onplaying = function () {

this.pause();

musicAudio.onplaying = null;

};

num++;

}

}

});

}

其他的部分,可以通过下载源码来查看。

用html制作一个音乐排行榜,使用原生JavaScript制作一个漂亮的音乐播放器相关推荐

  1. php拼图游戏开发,原生javascript制作的拼图游戏实现方法详解

    本文实例讲述了原生javascript制作的拼图游戏实现方法.分享给大家供大家参考,具体如下: 实现方法 //1.让所有的li(在ul里)可以拖拽 //2.交换li的位置  计算背景图位置 //1.让 ...

  2. 一个WPF开发的、界面简洁漂亮的音频播放器

    今天推荐一个界面简洁.美观的.支持国际化开源音频播放器. 项目简介 这是一个基于C# + WPF开发的,界面外观简洁大方,操作体验良好的音频播放器. 支持各种音频格式,包括:MP4.WMA.OGG.F ...

  3. html制作顶部选项卡,html: 原生javascript实现选项卡

    前言 我觉得html中一个比较实用的功能就是选项卡,选择哪一个就显示对应的内容,感觉挺舒适的.用在页面布局上也是不错的选择. 那么选项卡到底是什么的样呢?下面我们来直观的看一下,如下图所示就是一个简单 ...

  4. React jsx转换成原生JavaScript的一个例子

    jsx代码: var React = require('react'); var ReactDOM = require('react-dom'); var MyButtonController = r ...

  5. 《原生javascript制作各种酷炫组件》专栏介绍

    本专栏主要是用原生javascript和css来编写一些炫酷的效果,用原生写是为了读者能把代码放到任何框架当中,代码没有做封装,瀑布式的代码理解起来容易,也容易修改以便达到自己想要的效果,适合初级学者 ...

  6. ios计算机音乐软件,DOTEC-AUDIO 将均衡、响度和 AU 插件播放器软件移植到了 iOS

    DOTEC-AUDIO将三款软件和插件制作成了iOS版本,现在你可以在苹果的APP Store上购买和下载,在iPhone或iPad上使用这些好看又好用的音频工具. AUAudioPlayer音乐播放 ...

  7. 音乐封面转动html,带封面的HTML5手机音频播放器

    本文演示了三种不同样式的html5音频播放器,通过html5的audio标签,使其支持自定义歌名.歌手和歌词,是否自动播放,音乐封面图,播放进度等 查看演示 下载资源: 104 次 下载资源 下载积分 ...

  8. 使用原生JavaScript做一个简单日历

    起因 突然工作方面要做一个关于选择日历区间的组件,虽然之前也做过,但是有点忘了,现在相当于用原生复习一下咯,顺便回顾一下当时的思路. 开始 先放一下最后的结果吧 (简简单单59行解决) 一开始肯定是构 ...

  9. 原生javascript制作svg进度球

    在SVG发展到今天,已经在互联网上进行了各式各样的运用,当然也就包括进度条以及进度球的制作,制作这个类型的动画交互该如何制作呢?接下来就带大家来揭秘吧! 1. 兴趣引导  > 最终效果 - SV ...

最新文章

  1. 2022-2028年中国氮肥行业投资分析及前景预测报告
  2. 第十六届全国大学智能车竞赛华南赛区成绩汇总
  3. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)...
  4. 分块的单点修改查询区间和_模版 单点修改,区间查询
  5. P4922-[MtOI2018]崩坏3?非酋之战!【dp】
  6. 自学php【二】 PHP计算时间加一天
  7. display:none的表单也会被提交
  8. 作为技术人员,经常遇到没有接触过的技术,有时是点滴的小技能,有时可能是大的一个研究课题,那么我们如何进行技术研究呢?
  9. 2019年新款iPhone高清渲染视频来了 强迫症慎点...
  10. 解决ubuntu 20.04 打不开设置的问题
  11. 项目管理ppt_干货:腾讯内部项目管理PPT!
  12. Mac上Fortran环境搭建
  13. python打印九九乘法表代码
  14. php中文制作,php中文验证码制作教程
  15. 【前端】一步一步使用webpack+react+scss脚手架重构项目
  16. 数据结构与算法的重要性
  17. 第二部分 音频压缩编码
  18. 字节流和字符流的应用
  19. ERROR: ExpansionError during parsing
  20. 基于XMPP的IOS聊天客户端程序(IOS端二)

热门文章

  1. 事业单位笔试:《综合知识》大纲
  2. distinct mysql性能_MySQL中distinct和group by性能比较
  3. 彻底清除已删除的文件
  4. 关于Autodesk软件安装问题
  5. Antd table组件样式去除背景色
  6. “亚马逊抄袭”引热议,拼多多、淘宝、京东该怎么玩?
  7. 用vc对oracle数据库编程,用VC开发基于ORACLE数据库应用程序
  8. 金三银四的背后--软件测试工程师的求职之路
  9. 凸优化_Stephen_Boyd_
  10. O(N*logN)的排序算法