基于JavaScript实现一个月饼音乐播放器

目录
  • 前言
  • 页面布局
    • 页面背景
    • 左侧列表
    • 中间播放器
    • 右侧歌词部分
  • 总结

前言

事情的经过是这样的,媳妇中秋发了一盒月饼,里面还有一个小蓝牙音响,她说如果这个音响是个月饼造型之类的是不是更能体现出中秋的气氛。于是我就想到了可以用代码给她实现一个啊,拿出了我仅有的一点点前端看家本领(我是搞后端的),浪费我三天假期,效果图如下,本来设想的挺好,可是由于本人能力有限,没有达到自己预想的目标,仅供娱乐!

页面布局

页面采用最简单的div+css进行布局,首先将页面分为三部分,分别为左边音乐列表,中间播放器部分和右边歌词部分。

页面背景

可以选择一张比较好看的照片作为页面背景,我就随便选了一张中秋主题相关的作为背景,下一步准备做一个设置功能可以自定义页面背景。

<div id="back_box" style="background-image: url('http://121.196.234.193/test/images/background.jpeg');"></div>

左侧列表

列表调用后端接口动态加载数据,后端接口采用php实现。

<div class="music_con">
        <div class="m_search">
            <input type="text" class="word search-word" placeholder="搜索"><input type="image" src="http://121.196.234.193/test/images/search.png" class="search-btn" placeholder="">
        </div>
        <ul id="lists">
        </ul>
    </div>

js实现部分如下:

ajax('GET', mp3Url, '', function(data){
                musicList = JSON.parse(data);
                str = '';
                for (var i =0, l= musicList.length; i<l; i++) {
                    if (i==0) {
                        str+='<li class="default">'
                    } else {
                        str +='<li>'
                    }
                    str +=   '<a href="./index.html" rel="external nofollow" >' +
                        '<label>'+musicList[i].title+'</label>' +
                        '<i> - </i>' +
                        '<span>'+musicList[i].singer+'</span>' +
                        '</a>' +
                        '</li>';
                }
                document.getElementById('lists').innerHTML= str
            })

中间播放器

这部分也是核心。

首先设置一个背景,本来想自己用代码画一个月饼的,结果超出了我的能力范围,于是从网上找一张图片,这个月饼是不是看着看诱人,其实这个地方可以根据音乐设定不同的背景,通过接口返回,在这里就先这样吧。

给图片加点特效——让它转起来。

<div class="PlayEy" style="transform: rotate(0deg);"></div>

在CSS3中transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。

rotate() :通过指定的角度参数对原元素指定一个2D rotation(2D 旋转),需先有transform-origin属性的定义。transform-origin定义的是旋转的基点,其中angle是指旋转角度,如果设置的值为正数表示顺时针旋转,如果设置的值为负数,则表示逆时针旋转。如:transform:rotate(30deg);

音乐播放采用audio标签。

<div class="btns-bg">
    <div class="PlayEy" style="transform: rotate(0deg);"></div>
    <div class="Btn"></div>
    <div class="Play" id="btn_play" item="1" style="background-image: url('http://121.196.234.193/test/images/pause.png'); width: 29px; height: 36px;">
        <audio src="http://121.196.234.193/test/music/1.mp3" id="audio_box" data-id="1"></audio>
    </div>
         <!--按钮(暂停/播放、上一曲、下一曲、声音开关、音量调节、循环播放)-->
         <div id="btn_prev"></div>
         <div id="btn_next"></div>

       <div id="volume_toggle" item="1" style="background-position: -152px 0px;"></div>
       <div class="volume_box">
       <input id="volume_change" type="range" min="1" max="10" value="5" style="background:linear-gradient(to right, #059CFA, #ebeff4 50%, #ebeff4)">
      </div>
     <div id="loop_type" item="1" style="background-position: -105px -58px;"></div>
         <!--音频时间-->
         <div class="time_box">
             <span id="now_time">00:00</span>
             <span id="total_time">00:22</span>
         </div>
         <!--音频播放进度条-->
         <div class="time_axis">
             <div class="slideway">
                 <p id="progress_bar"></p>
                 <div id="ahead_head"></div>
             </div>
         </div>
</div>

audio相关属性:

  • autoplay:自动播放(一般浏览器会禁止此行为)。
  • controls:显示音频控件。
  • loop:循环播放。
  • muted:静音。
  • preload:加载方式,分auto(当页面加载后载入整个音频)、metadata(当页面加载后只载入元数据)、none(当页面加载后不载入音频)。
  • src:音频地址。

js实现

// 启动播放方法
function plays(){
    //_audioDom.load();
    let playPromise = _audioDom.play() ;
    if (playPromise !== undefined) {
        playPromise.then(() => {
            _audioDom.play()
        }).catch(() => {})
    }
}

右侧歌词部分

主要用于展示当前播放音乐的标题和歌词信息,数据采用js动态加载。

<!--音频标题-->
    <div class="title_box">
        <span id="music_title">你笑起来真好看</span>
    </div>
    <!--歌词区域-->
    <div id="music_lyric">
        <span class="lyric_prev"></span>
        <span class="lyric_now"></span>
        <span class="lyric_next"></span>
    </div>

js部分实现:

 /** 当前播放时间发生改变的时候 **/
_audioDom.ontimeupdate = function(){
    _totalTime.innerHTML = timeFormat(_audioDom.duration);	// 音频总时间;
    _nowTime.innerHTML = timeFormat(_audioDom.currentTime);	// 更新当前播放的时间;
    var now_long = _audioDom.currentTime/_audioDom.duration*slidewayWidth; 			 	// 当前时间播放的长度
    _progress.style.width = now_long+'px';		 		// 进度条长度
    _aheadDom.style.left = (now_long-10)+'px'; // 进度条头位置

    //遍历歌词
    for (var i = 0, l = lyricArr.length; i < l; i++) {
        if (_audioDom.currentTime > lyricArr[i][0]) {
            if(i>=1){
                _lyricPrev.innerHTML = lyricArr[i-1][1];
                _lyricNow.innerHTML = lyricArr[i][1];
                if(lyricArr.hasOwnProperty(i+1)){
                    _lyricNext.innerHTML = lyricArr[i+1][1];
                }else {
                    _lyricNext.innerHTML = '';
                }
            }else{
                _lyricPrev.innerHTML = '';
                _lyricNow.innerHTML = lyricArr[i][1];
                _lyricNext.innerHTML = lyricArr[i+1][1];
            }
        }
    }
    addListenTouch(); // 监听手动拉动播放进度条
};

总结

虽然大体效果出来了,但是跟预想的还是有很大差距,因为不是专业的前端,整体实现比较简单,只能做到这了,仅供娱乐!

到此这篇关于基于JavaScript实现一个月饼音乐播放器的文章就介绍到这了,更多相关JavaScript音乐播放器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JavaScript实现音乐播放器

    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 效果 HTML代码 <!--播放器--> <div id="player">     <!--播放控件-->     <div id="playerControl">         <div class="playerImg">             <img src=&quo

  • JavaScript实现简单音乐播放器

    该篇文章会教你通过JavaScript制作一个简单的音乐播放器.包括播放.暂停.上一曲和下一曲. 阅读本文章你需要对HTML.CSS和Javascript有基本的了解. 话不多说,先上图. 这样看起来有点单调. 我们把它加在网页上试试. 具体效果可以去我的个人网站查看http://tcxqq.top 好了,成品已经展示了接下来,开干吧! <!DOCTYPE html> <html lang="en"> <head> <meta charset=

  • js实现音乐播放器

    本文实例为大家分享了js实现音乐播放器的具体代码,供大家参考,具体内容如下 音乐播放的主要js代码 音乐数据的数组对象 想向前端网页提供数据,并且为后面的js代码提供了音乐路径  {         ablum: "海阔天空",         artist: "Beyond",         id: 1,         name: "大地",         path: "musics/1592373302464.mp3"

  • js制作简单的音乐播放器的示例代码

    一.设计目的: 1.随着现在人民生活质量的提高同样伴随着生活压力的增大,越来越多的人追求越来越多的娱乐,其中一种娱乐方式就是音乐,于是突发奇想,制作一个音乐播放器. 2.主要功能: 1 支持循环自动播放 2 支持图片的旋转 3 支持调整播放的位置,以及调整声音的大小 4 歌词滚动效果 5 每秒显示音乐的播放时间 二 .设计思路: 1.向浏览器中添加背景音乐: 首先应该向网页中添加几首好听的背景音乐.添加音乐有,两种方式可以用一个audo标签,这样应该把音乐的地址存放到一个数组中,第二种方式是,有

  • 原生JS实现音乐播放器

    本文实例为大家分享了JS实现音乐播放器的具体代码,供大家参考,具体内容如下 首先,使用HTML搭好我们的框架结构.这一步为了提高我们代码的可读性,多写注释. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>原生JS音乐播放器</title> <link rel="stylesheet&qu

  • js实现网页音乐播放器

    本文为大家分享了简单的html,音乐播放器制作代码,供大家参考,具体内容如下 首先第一步找图片资源 音乐资源 放入到img文件夹中 第二步对页面布局进行布置 第三步书写js代码 复制代码运行的时候需要将图片资源,音乐资源换个名称. 运行实现图片的切换,效果如图: 代码如下: 希望各位喜欢!!! <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></

  • 基于JavaScript实现一个月饼音乐播放器

    目录 前言 页面布局 页面背景 左侧列表 中间播放器 右侧歌词部分 总结 前言 事情的经过是这样的,媳妇中秋发了一盒月饼,里面还有一个小蓝牙音响,她说如果这个音响是个月饼造型之类的是不是更能体现出中秋的气氛.于是我就想到了可以用代码给她实现一个啊,拿出了我仅有的一点点前端看家本领(我是搞后端的),浪费我三天假期,效果图如下,本来设想的挺好,可是由于本人能力有限,没有达到自己预想的目标,仅供娱乐! 页面布局 页面采用最简单的div+css进行布局,首先将页面分为三部分,分别为左边音乐列表,中间播放

  • JavaScript实现简单的音乐播放器

    本文实例为大家分享了JavaScript实现简单音乐播放器的具体代码,供大家参考,具体内容如下 主要功能:快进.快退.暂停.上下一首.禁音.鼠标控制音量.自动下一首.显示歌名 <html> <head>     @*不提供音频*@     <meta name="viewport" content="width=device-width" />     <title>ceshi14</title> <

  • 原生JS实现小小的音乐播放器

    前  言 最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐播放器~ 主要功能: 1.支持循环.随机播放 2.在播放的同时支持图片的旋转 3.支持点击进度条调整播放的位置,以及调整音量 4.显示音乐的播放时间 5.支持切歌:上一首.下一首.点击歌名切歌:暂停播放等~ 添加音乐有两种方式: ①可以用一个audo标签,这样应该把音乐的地址存放到一个数组中: ②第二种方式是,有几首歌就添加几个audo标签,然后获取所有的背景音乐(示例中我们先添加三首音乐,放到

  • Android实现音乐播放器歌词显示效果

    这两天有个任务,说是要写一个QQ音乐播放器歌词的那种效果,毕竟刚学自定义View,没有什么思路,然后就Google.写了一个歌词效果,效果图在后面,下面是我整理的代码. 首先实现这种效果有两种方式 1.自定义View里重载onDraw方法,自己绘制歌词 2.用ScrollView实现 第一种方式比较精确,但要支持滑动之后跳转播放的话难度很大,所以我选择第二种,自定义ScrollView 我也不多说,直接上代码,代码中有注释 一.自定义LycicView extends ScrollView 里面

  • Android开发简易音乐播放器

    这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这是代码的主要设计: 音乐主要存放在这一个文件中: 下面就来介绍各部分代码: activity-main.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://

  • Android基于Service的音乐播放器

    本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,当后台的播放状态发生变化时,程序将会通过发送广播通知前台Activity更新界面:当点击Activity的界面按钮时,系统将通过发送广播通知后台Service来改变播放状态. 前台Activity界面有两个按钮,分别用于控制播放/暂停.停止,另外还有两个文本框,用于显示正在播放的歌曲名.歌手名.前台Activity的代码如下: public class MainActivity extends AppCompat

  • 基于vue-element组件实现音乐播放器功能

    最近在写一个基于 github-page 和 gist 的博客, 想加个音乐播放器, 做了一个早上, 发出来分享一下 演示地址 https://github-laziji.github.io 效果 使用到的组件 element组件 布局 Layout 按钮 Button 滑块 Slider 进度条 Progress 弹出框 Popover html5组件 audio 实现代码 更详细的实现可以看 https://github.com/GitHub-Laziji/vblog <template>

  • Python使用PyQt5/PySide2编写一个极简的音乐播放器功能

    疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器. 这个极极极简的音乐播放器类似于"阅后即焚"的软件,播放器可以随机播放歌曲,获取下一首歌曲,不能重新播放上一首歌曲,不能获取歌曲的名称和演唱者.听过的歌曲,就像过眼云烟,放完即散. 下面来看看如何用Python实现这个音乐播放器软件吧! 一.创建UI界面 首先,我们来创建这个播放器的UI界面.这个播放器一共有6个控件: 左上角的程序关闭按钮: 左侧的播放状态标签: 顶部的slogan; 播放/暂停按钮: 下

  • c#基于winform制作音乐播放器

    前言:项目是c#的winform 写的,使用的播放器是基于AxWindowsMediaPlayer. AxWindowsMediaPlayer的方法 1 首先新建一个页面 如图所示: 图片左侧是列表 使用listview 右侧是背景图片.图片框框的地方是后面可以实现的,+和-按钮分别代表添加文件和删除文件 还有就是控制播放的顺序.下面的分别是修改歌词的字体 和展示/隐藏 2 新建一个透明的歌词页面[窗体] 3 新建一个半透明的页面[窗体] 4 业务代码 using System; using S

随机推荐