加林森 发表于 2022-7-19 15:51
是的。老黑的是走T台,我就来-个鸟语花香。
嗯嗯,很漂亮。
本帖最后由 加林森 于 2022-9-16 17:53 编辑 <br /><br />红影 发表于 2022-7-20 09:45
嗯嗯,很漂亮。
谢谢!
<style>
#papa { left: -214px; width: 1024px; height: 512px; background: tan url('https://pic.imgdb.cn/item/6323d7fa16f2c2beb19ea0b4.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; display: grid; place-items: center; overflow: hidden; position: relative; z-index: 1; }
#mplayer { position: absolute; bottom: 0; width: 300px; height: 90px; 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, rgba(0,0,105,.45), rgba(200,0,0,.35)); 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 white; border-radius: 6px; opacity: .25; }
#btnplay { width: 20px; height: 20px; background: rgba(255,255,255,.45); clip-path: polygon(0 0, 0 100%, 100% 50%); }
#btnpause { width: 2px; height: 20px; border-style: solid; border-width: 0px 4px; border-color: transparent rgba(255,255,255,.45); display: none; }
#prog { --yy: 20px; width: 300px; height: 16px; border-radius: 10px; background: linear-gradient(90deg, rgba(0,0,255,.45), rgba(255,0,0,.35) 100%, transparent 0); border: 1px solid gray; font: normal 14px / 16px sans-serif; color: snow; }
#lrc { position: absolute; top: 20px; text-shadow: 1px 1px 1px #000; }
.lrcChar { margin: 2px; padding: 8px; width: 40px; height: 40px; text-align: center; border-radius: 20% 40%; font: bold 2em / 40px sans-serif; display: inline-block; text-shadow: 1px 1px 1px #000; opacity: .8; backdrop-filter: blur(20px); position: relative; }
#tree { position: absolute; bottom: 60px; right: 10px; }
.leaf { position: absolute; left: 60px; top: 0; width: 100px; transform: rotate(-160deg); offset-distance: 0; offset-path: path("M20 0 Q0 200, 100 200 Q340 220, 170 660"); animation: move 8s linear infinite; }
@keyframesbg Merge { from { background-position: 0 0; }to { offset-distance: 100%;} }
#dt{ position: absolute; top: -2px;width: 100px; height: 100px; top: -10px; left: 150px;}
</style>
<div id="papa">
<img id="dt" src="https://pic.imgdb.cn/item/6247e3c027f86abb2a56f17a.gif" alt="" />
<img class="leaf" src="./pic/leaf.png" alt="" />
<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 id="lrc"></div>
</div>
<script>
let aud = new Audio();
let setColor = () => Math.random().toString(16).substr(-6);
let ranNum = (min,max) => Math.floor(Math.random() * (max - min + 1)) + min;
aud.src = 'https://music.163.com/song/media/outer/url?id=28785388.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', () => btnstate());
aud.addEventListener('play',() => btnstate());
aud.addEventListener('timeupdate', () => {
prog.style.background= 'linear-gradient(65deg, rgba(0,0,255,.45), rgba(255,0,0,.35) ' + aud.currentTime / aud.duration * 100 + '%, transparent 0)';
prog.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);
});
let btnstate = () => 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;
}
let mkLrc = (text) => {
let tstr = '';
Array.from({length: text.length}).forEach((ele,key) => {
tstr += `<span class="lrcChar" style='top: ${ranNum(-10, 10)}px; background: #${setColor()}; color: #${setColor()};'>${text.substr(key,1)}</span>`;
});
return tstr;
}
lrc.innerHTML = mkLrc('心灵入侵者');
</script>