|
|

楼主 |
发表于 2022-10-6 07:38
|
显示全部楼层
参考代码(本地测试模式)
- <style>
- #papa { margin: auto; width: 1024px; height: 640px; background: gray url('quiet.webp') no-repeat center/cover; box-shadow: 3px 3px 20px #000; display: grid; place-items: center; user-select: none; position: relative; z-index: 1; }
- #mplayer { position: absolute; bottom: 0; right: 100px; width: 300px; height: 60px; display: grid; place-items: center; cursor: pointer; }
- #mplayer:hover #btnwrap, #mplayer:hover #prog { transform: translateY(var(--yy)); }
- #mplayer:hover #btnwrap { opacity: .75; }
- #btnwrap { --yy: -20px; padding: 0; background: none; box-sizing: border-box; transition: .3s; position: absolute; display: grid; place-items: center; opacity: 0; }
- #btnwrap::before { content: ''; position: absolute; width: 40px; height: 40px; border: 3px dotted olive; border-radius: 50%; transform: translateX(-10px); }
- #btnwrap:hover { border-left-color: olive; }
- .play { height: 20px; border: 0px solid transparent; border-left-color: hsla(50,100%,90%,.55); border-width: 12px 0 12px 18px; }
- .pause { border-style: double; border-width: 0 0 0 18px; }
- #prog { --yy: 15px; width: 300px; height: 16px; border-radius: 10px; background: linear-gradient(90deg, hsla(50,10%,0%,.65), hsla(50,100%,40%,.55) 100%, transparent 0); border: 1px solid hsla(25,100%,95%,.45); font: normal 14px / 16px sans-serif; text-align: center; color: hsl(168,100%,50%); transition: .3s }
- #tit { position: absolute; top: 0; padding: 20px; text-align: center; font: bold 3.6em sans-serif; color: hsla(25,100%,95%,.65); letter-spacing: 3px; text-shadow: 0 8px 9px hsla(25,20%,50%,.55), 0px -2px 1px hsla(25,100%,100%,.75); }
- </style>
- <div id="papa">
- <img src="fish.gif" alt="" style="width: 100px; transform: translate(160px, 200px); mix-blend-mode: screen; "/>
- <div id="tit">晨曲</div>
- <div id="mplayer">
- <div id="prog">00:00 | 00:00</div>
- <div id="btnwrap" class="play"></div>
- </div>
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1487066170.mp3" loop="loop" autoplay="autoplay"></audio>
- <script>
- prog.onclick = (e) => aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
- btnwrap.onclick = () => aud.paused ? aud.play() : aud.pause();
- aud.addEventListener('pause', () => mState());
- aud.addEventListener('play', () => mState());
- aud.addEventListener('seeked', () => aud.play());
- aud.addEventListener('timeupdate', () => {prog.style.background= 'linear-gradient(90deg, hsla(50,20%,0%,.65), hsla(50,100%,40%,.55) ' + aud.currentTime / aud.duration * 100 + '%, hsla(50,100%,100%,.5) 0)';prog.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);});
- let mState = () => btnwrap.className = aud.paused ? 'play' : 'play pause';
- 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;};
- </script>
复制代码
|
|