音乐播放器

2019-03-23  本文已影响0人  Wo信你个鬼
<!doctype html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta name="Generator" content="EditPlus®">
        <meta name="Author" content="">
        <meta name="Keywords" content="关键字">
        <!--关键字-->
        <meta name="Description" content="描述">
        <!--描述-->
        <title>手机音乐播放器</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            
            #phone {
                width: 353px;
                /*宽度*/
                height: 600px;
                /*高度*/
                background-color: #000;
                margin: 100px auto;
                /*上下为100px,左右居中*/
            }
            
            .top {
                width: 353px;
                height: 23px;
                background: url("image/1.png");
            }
            
            .menu {
                width: 36px;
                height: 30px;
                margin-left: 6px;
                margin-top: -3px;
                cursor: pointer;
                float: left;
                position: absolute;
            }
            
            .title {
                width: 353px;
                height: 34px;
                background: url("image/2.png");
                color: #ccc;
                /*文本颜色*/
                font-size: 24px;
                font-weight: bold;
                text-align: center;
                font-family: 'kaiti';
                padding-top: 10px;
            }
            
            .singer {
                width: 353px;
                height: 34px;
                color: #ccc;
                /*文本颜色*/
                text-align: center;
                font-size: 14px;
                line-height: 34px;
            }
            
            .play {
                width: 103px;
                height: 103px;
                background: url("image/3.png");
                margin: 30px auto;
                border-radius: 50%;
                cursor: pointer;
            }
            
            .rotate {
                /*
         css3自定义动画: 动画名称 时间 匀速运动  无限重复
         */
                animation: rot 10s linear infinite;
            }
            
            .lrc {
                width: 301px;
                height: 315px;
                margin: auto;
                font-size: 14px;
                color: #ccc;
                line-height: 24px;
                text-align: center;
                overflow: hidden;
                /*超出隐藏*/
            }
            
            .context {
                position: relative;
            }
            /*关键帧控制每一帧*/
            
            @keyframes rot {
                from {
                    transform: rotate(0deg);
                }
                to {
                    transform: rotate(360deg);
                }
            }
            
            textarea {
                display: none;
            }
        </style>
    </head>

    <body>
        <div id="phone">
            <div class="top">

            </div>
            <div class="title">
                <div id="menu" class="menu">
                </div>
                达拉崩吧
            </div>
            <div class="singer">双笙</div>
            <div class="play" id="play"></div>
            <div class="lrc" id="lrc">
                <div id="context" class="context">
                </div>
            </div>
        </div>
        <textarea id="text">
[ar:双笙]
[ti:达拉崩吧]
[00:00.32]双笙 - 达拉崩吧
[00:00.02]词:ilem
[00:00.03]曲:ilem
[00:00.04]改编词:海苔
[00:10.35]很久很久以前
[00:12.35]巨龙突然出现
[00:14.35]带来灾难
[00:15.72]带走了公主又消失不见
[00:18.39]王国十分危险
[00:20.32]世间谁最勇敢
[00:22.33]一位勇者赶来大声喊
[00:25.67]我要
[00:26.40]带上最好的剑
[00:28.38]翻过最高的山
[00:30.30]闯进最深的森林
[00:32.12]把公主带回到面前
[00:34.48]国王非常高兴
[00:36.30]忙问他的姓名
[00:38.32]年轻人想了想
[00:40.27]他说
[00:41.21]陛下我叫
[00:42.14]风流倜傥京城酒吧鸡王南梦华
[00:45.41]再来一次
[00:46.16]风流倜傥京城酒吧鸡王南梦华
[00:49.52]是不是
[00:50.07]风流倜傥京城酒吧鸡王南梦华
[00:53.64]对对
[00:54.14]风流倜傥京城酒吧鸡王南梦华
[01:14.54]英雄鸡王梦华
[01:16.34]骑上最快的马
[01:18.32]带着大家的希望
[01:20.37]从城堡里出发
[01:22.28]战胜怪兽来袭
[01:24.32]获得十二金币
[01:26.33]无数伤痕见证他慢慢升级
[01:30.42]偏远美丽村庄
[01:32.32]打开所有宝箱
[01:34.34]一路风霜伴随指引前路的圣月光
[01:38.32]闯入一座山洞
[01:40.34]公主和可怕巨龙
[01:42.28]英雄拔出宝剑
[01:44.30]巨龙说
[01:45.56]我是
[01:46.07]村头恶霸女装扶她卡通狗蛋龙
[01:49.42]再说一次
[01:50.11]村头恶霸女装扶她卡通狗蛋龙
[01:53.58]是不是
[01:54.10]满嘴龅牙像个西瓜喷火不倒翁
[01:57.59]不对是
[01:58.10]村头恶霸女装扶她卡通狗蛋龙
[02:17.91]于是
[02:18.25]风流倜傥京城酒吧鸡王南梦华
[02:21.65]砍向
[02:22.06]村头恶霸女装扶她卡通狗蛋龙
[02:25.57]然后
[02:26.06]村头恶霸女装扶她卡通狗蛋龙
[02:29.61]咬了
[02:30.08]风流倜傥京城酒吧鸡王南梦华
[02:33.56]最后
[02:34.06]风流倜傥京城酒吧鸡王南梦华
[02:37.43]他战胜了
[02:38.14]村头恶霸女装扶她卡通狗蛋龙
[02:41.51]救出了
[02:42.15]公主露娜貌美如花
[02:44.14]Hentai
[02:44.59]蘭香红
[02:45.56]回到了
[02:46.14]上游洗头一片绿色春意盎然城
[02:49.54]国王听说
[02:50.24]风流倜傥京城酒吧鸡王南梦华
[02:53.47]他打败了
[02:54.15]村头恶霸女装扶她卡通狗蛋龙
[02:57.52]就把
[02:58.05]公主露娜貌美如花
[03:00.03]Hentai
[03:00.60]蘭香红
[03:01.56]嫁给
[03:02.02]风流倜傥京城酒吧鸡王南梦华
[03:06.15]鸡王梦华
[03:07.11]公主露娜幸福得像个童话
[03:10.21]他们生下一个孩子也在天天渐渐长大
[03:14.19]为了避免以后麻烦
[03:16.01]孩子称作王浩然
[03:18.24]他的全名十分难念
[03:20.04]我不想说一遍
 
     </textarea>
        <audio src="music/其实都没有.mp3" id="myMusic"></audio>
        <script>
            /*
                     业务需求:点击播放按钮,实现音乐的播放、暂停
                         1.获取点击按钮标签及音频标签
                         2、实现播放暂停功能
                     */
            var oPlay = document.getElementById("play");
            var oMyMusic = document.getElementById("myMusic");
            var oLrc = document.getElementById("context");
            var html = ""; //用来存储歌词
            //2、实现播放暂停功能
            var onoff = true; //做一个开关来存储音乐的播放状态
            oPlay.onclick = function() {
                if(onoff) { //如果onff为真就播放音乐
                    oMyMusic.play(); //播放音乐
                    onoff = false;
                    this.className = "play rotate";
                } else {
                    oMyMusic.pause(); //暂停音乐
                    onoff = true;
                    this.className = "play";
                }
            }
            //需求:歌词同步
            //1、获取歌词并添加到lrc中
            var text = document.getElementById("text").value;
            console.log(text);
            var arr = text.split("["); //从[处切割开
            console.log(arr);
            var context = document.getElementById("context");
            var n = 0; //用来存储播放了多少行
            for(var i = 0, len = arr.length; i < len; i++) {
//              console.log(arr[i]);
                var lrc = arr[i].split("]"); //从]处切割开
                var times = lrc[0].split(".");
                var time = times[0].split(":");
                var cut = time[0] * 60 + time[1] * 1;
//              console.log(cut);
                if(lrc[1]) {
                    html += "<p id=" + cut + ">" + lrc[1] + "</p>"
                }
            }
            oLrc.innerHTML = html;
            var aP = oLrc.getElementsByTagName("p");
            //2、歌词同步
            //2.1监听歌曲播放的进度
            oMyMusic.addEventListener("timeupdate", function() {
                //console.log(this.currentTime);//oMyMusic当前时间
                //console.log(parseInt(this.currentTime));//parseInt取整,去小数
                var curt = parseInt(this.currentTime); //根据音乐播放秒数来获取P标签的id
                if(document.getElementById(curt)) { //存在
                    //先把所有的都变为原来的颜色
                    for(var i = 0, len = aP.length; i < len; i++) {
                        aP[i].style.color = "#ccc";
                        aP[i].style.fontSize = "14px";

                    }
                    document.getElementById(curt).style.color = "red";
                    document.getElementById(curt).style.fontSize = "16px";
                    //运用context的marginTop值,relative,overflow来实现歌词滚动
                    if(aP[n + 6] && aP[n + 6].id == curt) {
                        console.log(n)
                        context.style.marginTop = -24 * n + "px";
                        n++;
                    }
                }
            })
            //2.2监听歌曲播放完成
            oMyMusic.addEventListener("ended", function() {
                context.style.marginTop = 0;
                this.currentTime = 0; //当前时间改为0
                oPlay.className = "play";
                onoff = true;
            })
        </script>
    </body>

</html>

上一篇下一篇

猜你喜欢

热点阅读