|
|

楼主 |
发表于 2023-1-21 23:35
|
显示全部楼层
代码
- <style>
- #papa { margin: 0 0 0 calc(50% - 593px); display: grid; place-items: center; width: 1024px; height: 640px; background: linear-gradient(to right bottom,tan,black); background-blend-mode: normal, color; box-shadow: 3px 3px 20px #000; user-select: none; position: relative; perspective: 3000px; z-index: 1; }
- #papa::before, #papa::after { position: absolute; content: url('https://638183.freep.cn/638183/t23/1/rabbit.gif'); mix-blend-mode: multiply; pointer-events: none; }
- #papa::before { transform: rotate(-90deg); right: 0; top: 30%; }
- #papa::after { left: 4%; bottom: 10%; }
- </style>
- <div id="papa"></div>
- <script >
- (function() {
- (function(mkPlayer) {let defaults = {player_css: 'bottom: 0; left: 50%; transform: translateX(-50%);',mlist_css: 'top: 0; left: 0;',playerCode: `<style>#mplayer {position: absolute;display: grid;grid-template-areas: 'cur btnplay dur''prog prog prog';gap: 8px 2px;place-items: end center;color: var(--color);font: normal 16px sans-serif;padding-bottom: 20px;z-index: 999;--ww: 260px;--color: hsla(0,0%,100%,.75);--track: hsla(90,100%,95%,.65);--prog: linear-gradient(90deg,hsla(90,30%,50%,.55),hsla(280,40%,50%,.75),hsla(30,100%,50%,.65));}#cur { grid-area: cur; color: var(--color); }#dur { grid-area: dur; color: var(--color); }#btnplay {--state: paused;grid-area: btnplay;background: conic-gradient(red,orange,yellow,green,teal,blue,purple);mask: radial-gradient(transparent 3px,red 0);-webkit-mask: radial-gradient(transparent 3px,red 0);border-radius: 50%;width: 35px;height: 35px;cursor: pointer;animation: rot linear 3s infinite;animation-play-state: var(--state);}#prog {--xx: 0px;grid-area: prog;width: var(--ww);height: 4px;background: var(--track);position: relative;display: grid;place-items: center;border-radius: 4px;}#prog::before, #prog::after { position: absolute; content: ''; }#prog::before {left: 0;width: var(--xx);height: 100%;border-radius: 6px;background: var(--prog);border-radius: 4px;}#prog::after {left: calc(var(--xx) - 12px);opacity: .85;width: 16px;height: 16px;background: radial-gradient(transparent 2px, teal 0, black);border-radius: 50%;cursor: pointer;}#mlist { position: absolute; padding: 20px; }#mlist > a { color: yellow; cursor: pointer; text-shadow: 1px 1px 2px black; text-decoration: none; }#mlist >a:hover { color: gold; }.sColor { color: orange; }@keyframes rot { to { transform: rotate(1turn); } }</style><div id="mlist"></div><div id="mplayer"><span id="btnplay"></span><span id="prog"></span><span id="cur">00:00</span><span id="dur">00:00</span></div>`,};let playCode = (user_config) => {let data = Object.assign({}, defaults, user_config);papa.innerHTML += data.playerCode;mplayer.style.cssText += data.player_css;mlist.style.cssText += data.mlist_css;let mDrag = false;let aud = document.createElement('audio');papa.appendChild(aud);(function addList() {let str = '';data.m_ar.forEach( (item,key) => {str += `<a onclick="javascript:mplay(${key})">${key+1} ${data.m_ar[key][1]}</a><br>`;});mlist.innerHTML = str;})();btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();aud.addEventListener('timeupdate', () => {cur.innerText = toMin(aud.currentTime);dur.innerText = toMin(aud.duration);if(mDrag===false) prog.style.setProperty('--xx', aud.currentTime * prog.offsetWidth / aud.duration + 'px');});aud.addEventListener('pause', () => mState());aud.addEventListener('play', () => mState());aud.addEventListener('ended', () => mplay());aud.onerror = () => mplay();prog.onmousedown = () => mDrag = true;document.onmouseup = () => mDrag = false;mplayer.onmouseup = (e) => { if(mDrag) aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth; };mplayer.onmousemove = (e) => { if(mDrag) moveBar(e.offsetX); };let mState = () => aud.paused ? btnplay.style.setProperty('--state', 'paused'): btnplay.style.setProperty('--state', 'running');mplay = (idx=-1) => {if (idx < 0) idx = Math.floor(Math.random() * data.m_ar.length);aud.src = data.m_ar[idx][0];aud.play();setRed(idx);};let setRed= (idx) => {let str = mlist.innerHTML;str = str.replace(/<\/?span[^\>]*\>/g,'');str = str.replace(`${idx+1} ${m_ar[idx][1]}`, `${idx+1} <span class="sColor">${m_ar[idx][1]}</span>`);mlist.innerHTML = str;};let moveBar = (x) => {if(x < 0) x = 0;if(x > prog.offsetWidth - 5) x = prog.offsetWidth - 5;prog.style.setProperty('--xx', x + 'px');};let toMin = (val) => {if (!val) return '00:00';val = Math.floor(val);let min = parseInt(val / 60), sec = parseFloat(val % 60);if (min < 10) min = '0' + min;if (sec < 10) sec = '0' + sec;return min + ':' + sec;};mplay();};mkPlayer.HCPlayer = playCode;})(this);
- let m_ar = [['https://music.163.com/song/media/outer/url?id=2016103069.mp3','时间的尽头'],['https://music.163.com/song/media/outer/url?id=2015078135.mp3','兔兔如律令'],['https://music.163.com/song/media/outer/url?id=1870383688.mp3','小白兔'],['https://music.163.com/song/media/outer/url?id=2003262659.mp3','晚风心里吹'],['https://music.163.com/song/media/outer/url?id=2005483732.mp3','我们的歌'],['https://music.163.com/song/media/outer/url?id=818321.mp3','橙色'],['https://music.163.com/song/media/outer/url?id=433107499.mp3','星空'],['https://music.163.com/song/media/outer/url?id=28466105.mp3','殻ノ少女'],['https://music.163.com/song/media/outer/url?id=68350.mp3','梦中人'],['https://music.163.com/song/media/outer/url?id=1464314931.mp3','你的笑脸'],['https://music.163.com/song/media/outer/url?id=35437599.mp3','太极'],['https://music.163.com/song/media/outer/url?id=271423.mp3','今夜为你醉'],];
- HCPlayer({
- m_ar: m_ar,
- mlist_css: 'top: 0;',
- mplayer_css: '',
- });
- })();
- </script>
复制代码
|
|