找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 512|回复: 33

学习代码音乐播放器

[复制链接]

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
发表于 2024-3-19 12:19:45 | 显示全部楼层 |阅读模式 IP:亚太地区
本帖最后由 老谟深虑 于 2024-4-6 16:42 编辑

女人如花-香耐尔
00:00 /00:00

评分

参与人数 9金币 +82 收起 理由
筱亭 + 8 赞一个!
月婵 + 10 赞一个!
七彩童年 + 8 赞一个!
咕咚来了 + 10 赞一个!
西湖 + 10 赞一个!
微尘 + 8 赞一个!
庶民 + 10 很给力!
风清 + 10 赞一个!
丁香 + 8 赞一个!

查看全部评分

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
 楼主| 发表于 2024-3-19 12:22:32 | 显示全部楼层 IP:亚太地区
  1. <style>
  2. #bfqbg {margin: 200px -20px;
  3.         width: 960px;
  4.         height: 120px;
  5.         background:#000 url()no-repeat 0px -200px/cover;
  6.         border-radius:2px;
  7.         position: relative;overflow: hidden;
  8.         z-index: 123;
  9. }
  10. #tp{position:absolute;height:106px;width:106px;bottom:8px; left:8px;}
  11. #tp img{height: 100%;width: 100%;}
  12. #dt{position: absolute;bottom:248px; left:0%;width: 100%;height: 120px;opacity: .4;}
  13. #dt img{height: 600px;width: 100%;}
  14. #mplayer {z-index: 100;position:absolute;bottom:10px; left:80px;width:28px;height:28px;}
  15. #tmsg {position: absolute;z-index: 91;
  16.         font: normal 12px sans-serif;
  17.         color: #ffffff;
  18.         bottom:10px; right:20px}

  19. #prog {position: absolute;z-index: 91;
  20.         width: 730px;
  21.         height: 1%;
  22.         cursor: pointer;
  23.          bottom:14px;left:120px;
  24. color: #cccccc;
  25. }
  26. #bt{ width: 500px; height: 50px;  color: #ffffff; position: absolute; left:120px;top:10px;  font-size: 16px; font-family:仿宋;z-index: 21;  }

  27. </style>

  28. <div id="bfqbg">
  29. <div id="dt"><img id="Img" src="https://pic.imgdb.cn/item/64f84824661c6c8e54f9ba5c.gif" /></div>
  30. <img id="tp" src="https://s21.ax1x.com/2024/03/19/pFRIhXq.jpg" alt="" />
  31. <div id="bt">女人如花-香耐尔</div>
  32. <div ><img   id="mplayer" src="http://image.hnol.net/c/2022-02/01/23/202202012325163161-5769293.png" alt="" /></div>
  33. <div id="tmsg">00:00 /00:00</div>
  34. <div  id="prog"></div>
  35. <div  class="lrc">
  36.         <ul id="ullrc">
  37.          </ul>
  38. </div>
  39. </div>

  40. <audio id="aud" src="https://www.kumeiwp.com/sub/filestores/2024/03/04/3e6e07d938b991e13737ad849c58b3b7.mp3" loop autoplay></audio>
  41. <style type="text/css">
  42. .lrc{z-index: 20;
  43.     width: 700px;bottom:-18px; left:210px;
  44.     height: 100px;
  45.     overflow: hidden;
  46.     display: block;position: absolute;
  47.     margin: 0 auto;}
  48. .lrc #ullrc{
  49. width: 700px;
  50. padding: 0;list-style: none;transition: 0.3s all ease;
  51.     margin: 0;}
  52. /*歌词普通样式*/
  53. .lrc #ullrc li{
  54.     height: 70px;
  55.     line-height: 60px;
  56. font-family:仿宋;
  57.     font-size: 0px;
  58.     color: #000078;
  59.     font-weight: normal;
  60.     transition: .3s all ease;/*一定要加上不然看着突兀*/
  61.     list-style-type: none;
  62.     text-align: center;display: block;
  63.     width: 100%;
  64.     margin: 0 auto;}
  65. /*动态歌词样式*/
  66. .lrc #ullrc li.active{
  67.     font-size: 25px;
  68.     color: #ffffff;}
  69. </style>
  70. <script >
  71. var lrc = `[00:00.00]歌曲:女人如花
  72. [00:06.70]作词:午夜香茗
  73. [00:12.01]作曲:音乐走廊
  74. [00:18.98]翻唱:香耐尔
  75. [00:24.98]同步歌词编辑:老谟深虑
  76. [00:31.24]女人是一朵花
  77. [00:35.61]摇曳在天涯
  78. [00:39.19]如若你想摘下
  79. [00:42.79]学会飞上悬崖
  80. [00:46.45]女人是朵玫瑰
  81. [00:50.09]娇艳欲滴下
  82. [00:53.69]如若你想摘下
  83. [00:57.35]请你好好待她
  84. [01:03.20]女人是朵梅花
  85. [01:06.51]越冷越开花
  86. [01:10.07]如若你有一天
  87. [01:13.75]醉倒在花下
  88. [01:17.33]请你好好珍藏
  89. [01:20.98]别让散落天涯
  90. [01:25.79]女人花她摇曳红尘中
  91. [01:32.80]女人花等有心人采她
  92. [01:39.99]若是你闻到了花香浓
  93. [01:47.39]就多情的把她带回家
  94. [01:56.77]歌曲:女人如花
  95. [01:56.84]作词:午夜香茗
  96. [02:03.90]作曲:音乐走廊
  97. [02:14.72]翻唱:香耐尔
  98. [02:24.71]都说红颜是沙
  99. [02:28.27]时光难留下
  100. [02:31.85]都说爱是如画
  101. [02:35.48]浏览都成神话
  102. [02:39.20]爱不够的是傻
  103. [02:42.83]都是手中沙
  104. [02:46.45]风一样的四季
  105. [02:50.19]无力拯救变化
  106. [02:55.87]女人是朵梅花
  107. [02:59.20]越冷越开花
  108. [03:02.79]如若你有一天
  109. [03:06.52]醉倒在花下
  110. [03:10.05]请你脱俗挥歌
  111. [03:13.72]墨点如诗如画
  112. [03:18.57]女人花她摇曳红尘中
  113. [03:25.64]女人花等有心人采她
  114. [03:32.97]若是你闻到了花香浓
  115. [03:40.25]就多情的把她带回家
  116. [03:47.69]女人花她摇曳红尘中
  117. [03:54.50]女人花等有心人采她
  118. [04:01.90]若是你闻到了花香浓
  119. [04:09.20]就多情的把她带回家
  120. [04:16.57]女人多情时
  121. [04:19.32]如水如花
  122. [04:25.38]***感谢聆听***
  123. [04:29.59]支持原创!!!
  124. [04:31.73]
  125. 未经许可,不得翻唱或使用
  126. `;
  127. function $(id) {return document.getElementById(id);
  128. }//这样写以后getid方便
  129. function getLrcArray() {
  130.     var parts = lrc.split("\n");
  131.     for (let index = 0; index < parts.length; index++) {
  132.         parts[index] = getLrcObj(parts[index]);
  133.     }
  134.     return parts;

  135.     function getLrcObj(content) {
  136. var twoParts = content.split("]");
  137. var time = twoParts[0].substr(1);
  138. var timeParts = time.split(":");
  139. var seconds = +timeParts[1];
  140.         var min = +timeParts[0];
  141.         seconds = min * 60 + seconds;
  142.         var words = twoParts[1];
  143.         return{
  144.             seconds: seconds,
  145.             words: words,
  146.         };
  147.     }
  148. }
  149. var lrcArray = getLrcArray();
  150. function inputLrc() {
  151.     for (let index = 0; index < lrcArray.length; index++) {
  152.         var li = document.createElement("li");
  153.         li.innerText = lrcArray[index].words;
  154.         $("ullrc").appendChild(li);
  155.     }
  156. }
  157. inputLrc();
  158. function setPosition() {
  159.     var index = getLrcIndex();
  160.     if (index == -1) {
  161.         return;
  162.     }
  163.     var lrc_li_height = 70, lrc_ul_height = 60;
  164.     var top = index * lrc_li_height + lrc_li_height / 2 - lrc_ul_height / 2;
  165. if (top < 0) {top = 0;}$("ullrc").style.marginTop = -top + "px";
  166.     var activeLi = $("ullrc").querySelector(".active");
  167.     if(activeLi){
  168.         activeLi.classList.remove("active");}
  169. $("ullrc").children[index].classList.add("active");
  170. }
  171. var turn = 0;
  172. function getLrcIndex(){
  173. var time = $("aud").currentTime + turn;for (var index = 0; index < lrcArray.length; index++) {
  174.         if (lrcArray[index].seconds > time) {
  175.             return index - 1;
  176.         }
  177.     }
  178. }
  179. $("aud").ontimeupdate = setPosition;




  180. (function() {
  181. var aud = document.getElementById("aud");
  182. var img = document.getElementById("mplayer");
  183. var image= document.getElementById("Img");
  184. img.onclick = function() {
  185.         if (aud.paused) {
  186.                 aud.play();image.play();
  187.         } else {
  188.                 aud.pause();image.stop();
  189.         }
  190. }
  191. aud.addEventListener("play", function (e) {
  192.         img.src="http://image.hnol.net/c/2022-02/01/23/202202012325163161-5769293.png";
  193. }, false);
  194. aud.addEventListener("pause", function (e) {
  195.         img.src="http://image.hnol.net/c/2022-02/01/23/202202012327333961-5769293.png";
  196. }, false);})();


  197. /*进度条 进度时间*/
  198. prog.onclick = (e) => {
  199.                 aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
  200.         }
  201. aud.addEventListener('timeupdate', () => {
  202.                aud.addEventListener('timeupdate', () => {prog.style.background= 'linear-gra**nt(90deg, red, red, red ' + aud.currentTime / aud.duration * 100 + '%, snow 0)';});
  203.                 tmsg.innerText = toMin(aud.currentTime) + ' / ' + toMin(aud.duration);

  204.         });
  205. let toMin = (val) => {
  206.                 if (!val) return '00:00';
  207.                 val = Math.floor(val);
  208.                 let min = parseInt(val / 60),
  209.                         sec = parseFloat(val % 60);
  210.                 if (min < 10) min = '0' + min;
  211.                 if (sec < 10) sec = '0' + sec;
  212.                 return min + ':' + sec;
  213.         };
  214. /*结束*/
  215. </script>

  216. <script>
  217. if ('getContext' in document.createElement('canvas')) {
  218.     HTMLImageElement.prototype.play = function() {
  219.         if (this.storeCanvas) {
  220.             // 移除存储的canvas
  221.             this.storeCanvas.parentElement.removeChild(this.storeCanvas);
  222.             this.storeCanvas = null;
  223.             // 透明度还原
  224.             image.style.opacity = '';
  225.         }
  226.         if (this.storeUrl) {
  227.             this.src = this.storeUrl;   
  228.         }
  229.     };
  230.     HTMLImageElement.prototype.stop = function() {
  231.         var canvas = document.createElement('canvas');
  232.         // 尺寸
  233.         var width = this.width, height = this.height;
  234.         if (width && height) {
  235.             // 存储之前的地址
  236.             if (!this.storeUrl) {
  237.                 this.storeUrl = this.src;
  238.             }
  239.             // canvas大小
  240.             canvas.width = width;
  241.             canvas.height = height;
  242.             // 绘制图片帧(第一帧)
  243.             canvas.getContext('2d').drawImage(this, 0, 0, width, height);
  244.             // 重置当前图片
  245.             try {
  246.                 this.src = canvas.toDataURL("image/gif");
  247.             } catch(e) {
  248.                 // 跨域
  249.                 this.removeAttribute('src');
  250.                 // 载入canvas元素
  251.                 canvas.style.position = 'absolute';
  252.                 // 前面插入图片
  253.                 this.parentElement.insertBefore(canvas, this);
  254.                 // 隐藏原图
  255.                 this.style.opacity = '0';
  256.                 // 存储canvas
  257.                 this.storeCanvas = canvas;
  258.             }
  259.         }
  260.     };
  261. }
  262. var image= document.getElementById("Img");
  263. </script>
复制代码


142

主题

1万

回帖

4万

积分

超级版主

积分
44676
发表于 2024-3-19 12:58:55 | 显示全部楼层 IP:
谢谢老莫版主!欣赏学习您的音乐播放器,刚点开一看,这么多代码就吓退了,以后再学习吧!
中午好!

121

主题

6199

回帖

2万

积分

蓬莱仙人

积分
26907
发表于 2024-3-19 13:30:14 | 显示全部楼层 IP:河北
太美妙了,上网就看到了。

93

主题

2009

回帖

1万

积分

镇海神笔

积分
10256
发表于 2024-3-19 13:36:48 | 显示全部楼层 IP:北京
欣赏老师代码音画《女人花》

365

主题

2万

回帖

8万

积分

版主

积分
81612
发表于 2024-3-19 14:06:46 | 显示全部楼层 IP:河北石家庄
欣赏了老友的佳作,赞一个!

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
 楼主| 发表于 2024-3-19 14:15:24 | 显示全部楼层 IP:亚太地区
丁香 发表于 2024-3-19 12:29
谢谢老师,有空开电脑学起来。

       这个好学,等待你的作品。

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
 楼主| 发表于 2024-3-19 14:17:44 | 显示全部楼层 IP:亚太地区
风清 发表于 2024-3-19 12:58
谢谢老莫版主!欣赏学习您的音乐播放器,刚点开一看,这么多代码就吓退了,以后再学习吧!
中午好!
...

        哈哈,不用害怕,只要一张图片、一个音乐地址、一个同步歌词就够了。

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
 楼主| 发表于 2024-3-19 14:18:30 | 显示全部楼层 IP:亚太地区
庶民 发表于 2024-3-19 13:30
太美妙了,上网就看到了。

       谢谢老乡支持,下午好!

317

主题

1万

回帖

7万

积分

超级版主

积分
75192
 楼主| 发表于 2024-3-19 14:19:15 | 显示全部楼层 IP:亚太地区
湛蓝 发表于 2024-3-19 13:36
欣赏老师代码音画《女人花》

       谢谢老师的支持欣赏,下午好!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|离退休论坛 ( 浙B2-20100176 )

GMT+8, 2024-11-25 11:57 , Processed in 0.075488 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表