|
|

楼主 |
发表于 2023-1-25 20:54
|
显示全部楼层
美好的一天
<style>
#papa { left: -250px; width: 1100px; height: 700px; background: #ccc url('https://pic1.imgdb.cn/item/63380a9716f2c2beb1c4a6f6.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; display: grid; place-items: center; position: relative; z-index: 1; }
#mplayer { position: absolute; bottom: 0; width: 300px; height: 80px; user-select: none; display: grid; place-items: center; cursor: pointer; }
#mplayer:hover #btnwrap, #mplayer:hover #prog { transform: translateY(var(--yy)); }
#mplayer:hover #btnwrap { background: linear-gradient(to top right, purple, orange); border-radius: 50%; opacity: .75; }
#btnwrap, #prog { position: absolute; display: grid; place-items: center; transition: .5s; }
#btnwrap { --yy: -15px; width: 40px; height: 40px; transform: rotate(45deg); border: 1px solid tan; border-radius: 6px; opacity: 0; }
#btnplay { width: 20px; height: 20px; transform: translateX(3px); background: #eee; clip-path: polygon(0 0, 0% 100%, 100% 50%); }
#btnpause { width: 2px; height: 20px; border-style: solid; border-width: 0px 4px; border-color: transparent #eee; display: none; }
#prog { --yy: 20px; width: 300px; height: 16px; border-radius: 10px; background: linear-gradient(90deg, orange, purple 100%, transparent 0); border: 1px solid tan; font: normal 14px / 16px sans-serif; color: #fff; text-shadow: 1px 1px 0 #000; opacity: .8; }
.star5 { position: absolute; background: transparent; top: -130px; left: -90px; font: normal 18px /18px sans-serif; offset-distance: 0%; offset-path: path("m418.5,540c0,0 -23,-20 -23.5,-20c0.5,0 -29.5,-10 -30.5,-11c-1,-1 -32,-14 -32.5,-14c0.5,0 -26.5,-17 -27,-17c0.5,0 -27.5,-35 -28,-35c0.5,0 -10.5,-23 -11,-23c0.5,0 5.5,-26 5,-26c0.5,0 7.5,-13 7,-13c0.5,0 9.5,-12 9,-12c0.5,0 14.5,-9 14,-9c0.5,0 22.5,-3 22,-3c0.5,0 13.5,3 13,3c0.5,0 20.5,8 20,8c0.5,0 18.5,19 18,19c0.5,0 10.5,20 10,20c0.5,0 13.5,32 13,32c0.5,0 11.5,42 11,42c0.5,0 -0.5,-53 -1,-53c0.5,0 9.5,-52 9,-52c0.5,0 9.5,-22 9,-22c0.5,0 7.5,-20 7,-20c0.5,0 18.5,-8 18,-8c0.5,0 14.5,-3 14,-3c0.5,0 15.5,-1 15,-1c0.5,0 20.5,9 20,9c0.5,0 12.5,20 12,20c0.5,0 7.5,18 7,18c0.5,0 2.5,20 2,20c0.5,0 -0.5,25 -1,25c0.5,0 -12.5,19 -13,19c0.5,0 -5.5,17 -6,17c0.5,0 -24.5,25 -25,25c0.5,0 -19.5,24 -20,24c0.5,0 -36.5,41 -36.5,41z"); text-shadow: 0 0 12px rgba(199,245,122,.75); animation: move 12s var(--ss) linear infinite; }
@keyframes move{to{offset-distance:100%}}
</style>
<div id="papa">
<div id="mplayer">
<div id="btnwrap"><span id="btnplay"></span><span id="btnpause"></span></div>
<div id="prog">00:00 | 00:00</div>
</div>
</div>
<script>
let mKey = 0, mFlag = true, aud = new Audio();
let setColor = () => Math.random().toString(16).substr(-6);
Array.from({length: 40}).forEach((ele,key) => {
ele = document.createElement('span');
ele.className = 'star5';
ele.innerText = '\u2764';
ele.style.cssText += `--ss: ${key * 0.5}s; color: #F70938;`;
papa.appendChild(ele);
});
aud.src = 'http://music.163.com/song/media/outer/url?id=5177963.mp3';
aud.autoplay = true;
aud.loop = true;
btnwrap.onclick = () => aud.paused ? aud.play() : aud.pause();
prog.onclick = (e) => aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
aud.addEventListener('pause', () => mState());
aud.addEventListener('play', () => mState());
aud.addEventListener('timeupdate', () => {
prog.style.background = 'linear-gradient(90deg, orange, purple ' + aud.currentTime / aud.duration * 100 + '%, snow 0)';
prog.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);
});
let mState = () => aud.paused ? (btnplay.style.display = 'block', btnpause.style.display = 'none') : (btnplay.style.display = 'none', btnpause.style.display = 'block');
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>
|
|