|
|

楼主 |
发表于 2022-2-15 22:40
|
显示全部楼层
细节逻辑修正过的代码:
- <style type="text/css">
- #waiDiv { margin:10px; float:right; padding:8px; width:400px; background:#696969; border-radius:10px; box-shadow:2px 2px 4px #000; display:flex; flex-direction:column; position:relative; }
- #audDiv { width:100%; display:flex; flex-direction:row; align-items:center; font-size:10px; position: relative; }
- #add1 { margin-left: 12px; background:#eee; text-align:center; width:20px; height:20px; line-height:20px; border-radius:50%; cursor:pointer; }
- #add1:hover { color: red; }
- #mLiDiv { margin-top: 10px; background:#eee; color:#000; min-height:100px; padding:10px; border:1px solid olive; font-size:14px; column-count: 2; }
- #mLiDiv a { text-decoration: none; cursor:pointer; }
- #mLiDiv a:hover { color:red; }
- #prompt { position:absolute; left:200px; top:50px; width:400px; padding:6px 12px; background:silver; font-size:12px; display:none; box-shadow:1px 1px 1px #666; border-radius:2px; }
- #prompt input { outline:none; }
- #prompt input[type=text] { margin:4px;padding:4px; width:392px; }
- #prompt input[type=button] { border-radius:4px; cursor:pointer; border:1px solid gray; border-radius:3px; box-shadow: 1px 1px 2px #444; }
- #audDiv input[type=radio], #audDiv input[type=checkbox] { cursor:pointer; }
- #paDiv { margin: auto; width: 220px; display: flex; align-items: center; border: 1px solid olive; border-radius: 8px 0px 8px 0px; background: rgba(0,0,0,.8); box-shadow: 1px 1px 2px #000; position: relative; }
- #jindu { position: relative; width: 200px; height: 8px; line-height: 8px; font-size: 10px; color: #eee; text-align: center; background: linear-gradient(90deg, olive, green) no-repeat; background-size: 8px 0px; cursor: pointer; }
- #btn-ro { width: 20px; height: 20px; line-height: 20px; font-size: 12px; background: linear-gradient(blue, silver, red); outline:none; color: white; border-radius: 50%; text-align: center; cursor: pointer; animation: rol linear 2s infinite; }
- #btn-ro:hover { opacity: 0.8; }
- #btn-ro:active { opacity: 1; }
- @keyframes rol { to { transform:rotate(360deg); } }
- </style>
- <div id="waiDiv">
- <div id="audDiv">
- <div id="paDiv">
- <div id="btn-ro">·</div>
- <div id="jindu"><div id="jd-go"></div></div>
- </div>
- <input id="muted" type="checkbox" onclick="aud.muted = this.checked ? true : false">静音
- <input id="dqxh" type="radio" name="rad" checked="checked" onclick="howplay()" />单曲
- <input id="lhbf" type="radio" name="rad" onclick="howplay()" />轮播
- <div id="add1">+</div>
- </div>
- <div id="mLiDiv"></div>
- <div id="prompt">
- <div>添歌</div>
- <input type="text" id="mName" placeholder="歌曲名称" /><br />
- <input type="text" id="mUrl" placeholder="歌曲地址" /><br />
- <div style="text-align:center;">
- <input id="subMe" type="button" value=" 添加 " />
- <input id="cancelMe" type="button" value=" 算了 " />
- </div>
- </div>
- </div>
- <script>
- var muAr = [
- ["http://www.kumeiwp.com/sub/filestores/2021/01/31/7341dcedf43c11dd16d22800f7097204.mp3","梅花泪"],
- ["http://www.kumeiwp.com/sub/filestores/2021/01/31/9d1f8a6e5f8171b2a1b7bd3effc36b0e.mp3","雪中情"],
- ["http://www.kumeiwp.com/sub/filestores/2021/01/31/221e902c0841fade7d57ae35b70ad94a.mp3","枉凝眉"],
- ["http://www.kumeiwp.com/sub/filestores/2021/01/31/298692fcf28214e68c7a8a3668f12fdc.mp3","女儿情"]
- ];
- var btn = document.getElementById('btn-ro');
- var jindu = document.getElementById('jindu');
- var aud = document.getElementById('myPlayer');
- var mLi = document.getElementById('mLiDiv');
- var mAdd = document.getElementById('add1');
- var prom = document.getElementById('prompt');
- var cancelMe = document.getElementById('cancelMe');
- var subMe = document.getElementById('subMe');
- var dqxh = document.getElementById('dqxh');
- var lhbf = document.getElementById('lhbf');
- var aud = document.createElement('audio');
- aud.loop = true;
- var playIdx = 0; //当前曲索引
- if(aud.paused) btn.style.animationPlayState="paused";
- //写歌单
- var str = "";
- for(j=0; j<muAr.length; j++) {
- str += (j+1) + ".<a id='list" + j + "' onclick='iPlay(" + j + ");howplay();' >" + muAr[j][1] + "</a><br />";
- }
- mLi.innerHTML += str;
- function iPlay(idx){ //播放函数
- playIdx = idx;
- aud.src = muAr[playIdx][0];
- aud.play();
- aud.addEventListener('timeupdate', tmMsg, true);
- aud.addEventListener('ended', function() { btn.style.animationPlayState="paused"; }, true);
- btn.style.animationPlayState="running";
- nameRed(playIdx);
- }
- function howplay(){ //单曲&轮播处理
- dqxh.checked ? aud.loop = true : (aud.loop = false,playNext(),aud.addEventListener('ended',playNext,false));
- prom.style.display = "none";
- }
- function playNext(){ //处理下一首
- if(aud.paused) iPlay(playIdx);
- playIdx += 1;
- if(playIdx >= muAr.length) playIdx = 0;
- }
- function nameRed(){ //歌单着色
- for(k=0;k<muAr.length;k++){
- let listId = "list" + k;
- document.getElementById(listId).style.removeProperty("color");
- }
- listId = "list" + playIdx;
- document.getElementById(listId).style.color = "red";
- }
- function tmMsg(){ //进度条
- let auT = Math.floor(aud.duration - aud.currentTime);
- let auM = auT / 60;
- let auMs = parseInt(auM);
- if (auMs <10) auMs = "0" + auMs;
- let auS = auT % 60;
- let auSs = Math.round(auS);
- if (auSs < 10) auSs = "0" + auSs;
- let jd = (100*aud.currentTime)/aud.duration;
- if(jd>0) {
- jindu.innerHTML = "- " + auMs +":" + auSs;
- jindu.style.backgroundSize = jd+ "% 8px";
- }
- }
- jindu.onclick = function(){ //进度控制
- let w = offset(jindu,"left");
- let x = (event.clientX - w) * aud.duration / jindu.clientWidth;
- aud.currentTime = x;
- }
- function offset(obj,direction){//获取元素总偏移量
- let offsetDir = "offset" + direction[0].toUpperCase()+direction.substring(1);
- let realNum = obj[offsetDir];
- let positionParent = obj.offsetParent;
- while(positionParent != null){
- realNum += positionParent[offsetDir];
- positionParent = positionParent.offsetParent;
- }
- return realNum;
- }
- btn.onclick = function(){ //光盘按钮点击事件
- aud.paused ? (aud.play(), btn.style.animationPlayState="running") : (aud.pause(), btn.style.animationPlayState="paused");
- }
- mAdd.onclick = function(){ prom.style.display = "block"; } //呼出加歌界面
- cancelMe.onclick = function(){ prom.style.display = "none"; } //放弃加歌
- subMe.onclick = function(){ //加歌并播放新歌
- let uri = document.getElementById('mUrl');
- let name = document.getElementById('mName');
- let tnum = muAr.length;
- let str1 = uri.value.trim();
- let str2 = name.value.trim();
- if(str1 !="" && str2 != ""){
- muAr[tnum] = [str1, str2];
- mLi.innerHTML += (tnum+1) + ".<a id='list" + tnum + "' onclick='iPlay(" + tnum + ");howplay();' >" + str2 + "</a><br />";
- iPlay(tnum);
- howplay();
- uri.value = "";
- name.value = "";
- }
- prom.style.display = "none";
- }
- //自动播放(默认播放第一首)
- iPlay(playIdx);
- </script>
复制代码 |
评分
-
| 参与人数 2 | 威望 +100 |
金钱 +200 |
经验 +100 |
收起
理由
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
赞一个! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|