|
|

楼主 |
发表于 2023-3-13 21:34
|
显示全部楼层
代码:
- <style>
- #clock {
- --ww: 120px; --state: paused; --deg: 0; --deg: 0s;
- position: relative;
- width: var(--ww);
- height: var(--ww);
- color: #eee;
- text-shadow: 1px 1px 2px #000;
- border: 6px solid #333;
- border-radius: 50%;
- cursor: pointer;
- display: grid;
- place-items: center;
- }
- #clock::before, #clock::after {
- position: absolute;
- content: '';
- width: 6px;
- height: calc(var(--ww) / 2 - 2px);
- border-radius: 50%;
- }
- #clock::before {
- background: hsla(0,90%,40%,.65);
- bottom: 50%;
- transform-origin: 50% 100%;
- transform: rotate(var(--deg));
- }
- #clock::after {
- top: 50%;
- background: hsla(0,0%,0%,.75);
- transform-origin: 100% 0;
- animation: swing .3s infinite alternate linear var(--state);
- }
- @keyframes swing { from { transform: rotate(15deg); } to {transform: rotate(-15deg); } }
- </style>
- <div id="clock">00:00</div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=106017" autoplay loop></audio>
- <script>
- 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 mState = () => clock.style.setProperty('--state', aud.paused ? 'pasued' : 'running');
- aud.addEventListener('play', () => mState());
- aud.addEventListener('pause', () => mState());
- clock.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
- aud.addEventListener('timeupdate', () => {
- let deg = 360*aud.currentTime / aud.duration;
- clock.style.setProperty('--deg', deg +'deg');
- clock.innerText = toMin(aud.currentTime) + ' - ' + toMin(aud.duration);
- });
- </script>
复制代码
|
|