|
|

楼主 |
发表于 2023-7-18 12:22
|
显示全部楼层
本帖最后由 马黑黑 于 2023-7-18 12:24 编辑
代码分享
- <style>
- #mydiv { margin: 20px auto; width: 600px; height: 400px; border: 1px solid tan; display: grid; place-items: center; position: relative; --state: paused; }
- #ppwrap { position: absolute; bottom: 50px; width: 120px; height: 120px; display: grid; place-items: center; background: radial-gradient(tan,transparent 45%,transparent 0); cursor: pointer; animation: rot 6s infinite linear var(--state); --deg: 360deg; }
- #ppwrap::before { position: absolute; content: attr(data-tt); white-space: pre; font: normal 14px sans-serif; color: darkgreen; animation: rot 6s infinite linear var(--state); --deg: -360deg; }
- .pinpu { position: absolute; left: 50%; top: 50%; width: 2px; height: 10px; transform-origin: 50% 0; animation: ppgo var(--du) var(--dl) infinite alternate linear var(--state); }
- @keyframes ppgo { to { height: 100px; } }
- @keyframes rot { to { transform: rotate(var(--deg)); } }
- </style>
- <div id="mydiv">
- <div id="ppwrap" data-tt="00:00
- 00:00"></div>
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=2049566571" autoplay loop></audio>
- <script>
- let ppnum = 50;
- (function(){
- !function(){ Array.from({length: ppnum}).forEach((item,key) => { item = document.createElement('span'); item.className = 'pinpu'; item.style.cssText += ` background: green; transform: rotate(${360 / ppnum * key}deg) translate(40px); --du: ${.2 + Math.random() * .2}s; --dl: -${Math.random()}s; `; ppwrap.appendChild(item); }); }();
- let mState = () => mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
- 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;}
- aud.addEventListener('pause', mState, false);
- aud.addEventListener('play', mState, false);
- aud.addEventListener('timeupdate', () => ppwrap.dataset.tt = toMin(aud.currentTime) + '\n' + toMin(aud.duration));
- ppwrap.onclick = () => aud.paused ? aud.play() : aud.pause();
- })();
- </script>
复制代码
|
|