花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 52|回复: 6

mplayer代码预览

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2024-8-29 23:04 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    1. <style>
    2. #mdiv {
    3.         margin: 20px auto;
    4.         width: 1024px;
    5.         height: 600px;
    6.         font: normal 10pt/12pt sans-serif;
    7.         color: lightblue;
    8.         user-select: none;
    9.         position: relative;
    10. }
    11. #mplayer {
    12.         --xx: 200px;
    13.         position: absolute;
    14.         width: 300px;
    15.         height: 150px;
    16.         background: linear-gradient(to top right, black, gray);
    17.         border-radius: 14px;
    18.         box-shadow: 0 0 16px gray;
    19. }
    20. #mtitle, #btn, #mprog, #btnWrap, #mmenu, #mlist, #mlogo, #mtt {
    21.         position: absolute;
    22. }
    23. #mtitle {
    24.         inset: 30px 8px 60px;
    25.         font: bold 13pt sans-sarif;
    26.         overflow: hidden;
    27.         display: grid;
    28.         place-items: center;
    29. }
    30. #btnWrap {
    31.         left: 50%;
    32.         transform: translateX(-50%);
    33.         bottom: 10px;
    34.         height: 30px;
    35.         display: flex;
    36.         place-items: center start;
    37.         gap: 8px;
    38. }
    39. #btnWrap button {
    40.         width: 30px;
    41.         height: 30px;
    42.         border-style: none;
    43.         padding: 0;
    44.         outline: 0;
    45.         cursor: pointer;
    46. }
    47. #btnplay {
    48.         background: url('./pic/play.svg') no-repeat center/cover;
    49. }
    50. #btnpause {
    51.         background: url('./pic/pause.svg') no-repeat center/cover;
    52. }
    53. #btnnext, #btnprev {
    54.         background: url('./pic/next.svg') no-repeat center/cover;
    55. }
    56. #btnloop {
    57.         transform: scale(60%);
    58.         background: url('./pic/loop.svg') no-repeat center/cover;
    59. }
    60. #btnprev {
    61.         transform: rotateY(180deg);
    62. }
    63. #btnWrap button:disabled {
    64.         filter: grayscale(100%);
    65. }
    66. #mmenu {
    67.         right: 8px;
    68.         top: 8px;
    69.         width: 20px;
    70.         height: 20px;
    71.         background: url('./pic/menu.svg') no-repeat center/cover;
    72. }
    73. #mlist {
    74.         left: -275px;
    75.         top: -8px;
    76.         width: 275px;
    77.         height: 150px;
    78.         background: linear-gradient(to top right, #333, #00ffcc);
    79.         border: 1px solid gray;
    80.         border-radius: 8px;
    81.         padding: 8px;
    82.         box-sizing: border-box;
    83.         white-space: nowrap;
    84.         overflow: auto;
    85.         display: none;
    86.         opacity: .95;
    87. }
    88. #mmenu:hover #mlist {
    89.         display: block;
    90. }
    91. #mlist a {
    92.         color: white;
    93.         text-decoration: none;
    94. }
    95. #mlist a:hover {
    96.         color: gold;
    97. }
    98. #mprog {
    99.         --prg: 0;
    100.         left: 10px;
    101.         bottom: 40px;
    102.         width: 280px;
    103.         height: 20px;
    104.         background: linear-gradient(to right, red var(--prg), gray 0) no-repeat center/100% 1px;
    105.         cursor: pointer;
    106. }
    107. #mlogo {
    108.         padding: 6px;
    109.         min-width: 20px;
    110.         min-height: 20px;
    111.         background: url('./pic/logo.svg') no-repeat 5px 5px/20px 20px;
    112.         padding-left: 30px;
    113. }
    114. #mtt {
    115.         left: 0;
    116.         height: 20px;
    117.         color: white;
    118.         animation: fly 10s linear infinite alternate var(--state);
    119. }
    120. @keyframes fly {
    121.         from { transform: translateX(0); }
    122.         to { transform: translateX(var(--xx)); }
    123. }
    124. </style>

    125. <div id="mdiv">
    126.         <div id="mplayer">
    127.                 <div id="mlogo">mplayer</div>
    128.                 <div id="mtitle"><span id="mtt">mplayer</span></div>
    129.                 <div id="btnWrap">
    130.                         <span id="tmsg">00:00/00:00</span>
    131.                         <button id="btnprev" type="button" value="prev" title="前一曲"></button>
    132.                         <button id="btnplay" type="button" value="play" title="播放" disabled></button>
    133.                         <button id="btnpause" type="button" value="pause" title="暂停"></button>
    134.                         <button id="btnnext" type="button" value="next" title="下一曲"></button>
    135.                         <button id="btnloop" type="button" value="1" title="正在随机循环"></button>
    136.                 </div>
    137.                 <div id="mprog"></div>
    138.                 <div id="mmenu">
    139.                         <div id="mlist">Hello<br>Hi<br>Hhel</div>
    140.                 </div>
    141.         </mplayer>
    142. </div>

    143. <script>

    144. let music_idx = 0, album = '变奏的梦想', duration;

    145. const music_ar = [
    146.         ['音乐地址1', '歌名1'],
    147.         ['音乐地址2', '歌名2'],
    148.         ['音乐地址3', '歌名3'],
    149. ];

    150. const aud = document.createElement('audio');
    151. aud.loop = false;
    152. aud.autoplay = true;
    153. mdiv.appendChild(aud);

    154. mlogo.innerText = album || 'mplayer';

    155. mkList = (ar, target) => {
    156.         let outcode = '';
    157.         ar.forEach((item,key) => {
    158.                 let text = key === music_idx ? ar[key][1] : `<a href="javascript:music_idx=${key};play();">${ar[key][1]}</a>`;
    159.                 outcode += `${key + 1} ${text}<br>`;
    160.         });
    161.         target.innerHTML = outcode;
    162. };

    163. play = () => {
    164.         aud.src = music_ar[music_idx][0];
    165.         aud.play();
    166.         mkList(music_ar, mlist);
    167. };

    168. music_idx = Math.floor(Math.random() * music_ar.length);

    169. play();

    170. toMin = (val) => {
    171.         if(!val) return '00:00';
    172.         let min = parseInt(val / 60), sec = parseFloat(Math.floor(val) % 60);
    173.         if(min < 10) min = '0' + min;
    174.         if(sec < 10) sec = '0' + sec;
    175.         return min + ':' + sec;
    176. };

    177. playState = () => {
    178.         if(aud.paused) {
    179.                 btnplay.disabled = false;
    180.                 btnpause.disabled = true;
    181.         }else{
    182.                 btnplay.disabled = true;
    183.                 btnpause.disabled = false;
    184.         }
    185.         mtt.innerText = music_ar[music_idx][1];
    186.         mplayer.style.setProperty('--xx', mplayer.offsetWidth - mtt.offsetWidth - 16 + 'px');
    187.         mplayer.style.setProperty('--state', aud.paused ? 'paused' : 'running');
    188. };

    189. aud.oncanplay = () => duration = aud.duration;

    190. aud.onplaying = aud.onpause = () => playState();

    191. aud.onended = () => {
    192.         music_idx = btnloop.value === '1' ? Math.floor(Math.random() * music_ar.length) : music_idx;
    193.         play();
    194.         duration = aud.duration;
    195. };

    196. aud.onerror = () => {
    197.         music_idx = (music_idx + 1) % music_ar.length;
    198.         play();
    199. };

    200. aud.ontimeupdate = () => {
    201.         mprog.style.setProperty('--prg', mprog.offsetWidth * aud.currentTime / duration + 'px');
    202.         tmsg.innerText = toMin(aud.currentTime) + '/' + toMin(duration);
    203. };

    204. mprog.onclick = (e) => aud.currentTime = duration * e.offsetX / mprog.offsetWidth;

    205. btnplay.onclick = () => aud.play();

    206. btnpause.onclick = () => aud.pause();

    207. btnprev.onclick = () => {
    208.         music_idx = (music_idx - 1) % music_ar.length;
    209.         if(music_idx < 0) music_idx = music_ar.length - 1;
    210.         play();
    211. };

    212. btnnext.onclick = () => {
    213.         music_idx = (music_idx + 1) % music_ar.length;
    214.         play();
    215. };

    216. btnloop.onclick = () => {
    217.         let val = parseInt(btnloop.value);
    218.         let bgs = ['./pic/loop.svg','./pic/loop1.svg'],
    219.                 tts = ['正在随机循环', '正在单曲循环'];
    220.         btnloop.style.background = `url(${bgs[val]}) no-repeat center/cover`;
    221.         btnloop.title = tts[val];
    222.         btnloop.value = val === 0 ? '1' : '0';
    223. };
    224. </script>
    复制代码

    评分

    参与人数 2威望 +100 金钱 +200 经验 +100 收起 理由
    红影 + 50 + 100 + 50 赞一个!
    小辣椒 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-8-29 23:07 | 显示全部楼层
    测试时:

    ① 做好帖子相关的内容,如背景图片什么的;

    ② JS部分,填好 album 变量,填好 如下歌曲信息:

    const music_ar = [
            ['音乐地址1', '歌名1'],
            ['音乐地址2', '歌名2'],
            ['音乐地址3', '歌名3'],
    ];

    其他不懂的就不要改动。

    可能很快,这个会做成插件
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-25 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    1421

    主题

    6万

    回帖

    12万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹心香一瓣音画大师天籁妙音风雨同行我心永远喜乐安康中秋征文指尖上的流年花潮管理

    发表于 2024-8-29 23:09 | 显示全部楼层
    多歌曲播放器
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-8-29 23:12 | 显示全部楼层
    按钮图片共七个,凡出现 "./pic/" 的地方,换成:"https://638183.freep.cn/638183/web/svg/"

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-8-29 23:13 | 显示全部楼层

    这是预览的,使用的话完善一下按钮图片,地板楼有说明
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-8-30 13:37 | 显示全部楼层
    看设置,这个播放器有很多功能键呢,可以任选想要听的歌曲了
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-8-30 13:38 | 显示全部楼层
    黑黑辛苦了,一直在研究着
     
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-15 04:41 , Processed in 0.075970 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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