|
|

楼主 |
发表于 2023-5-10 22:34
|
显示全部楼层
本帖最后由 马黑黑 于 2023-5-10 22:46 编辑
源码- <css-doodle id="mplayer">
- :doodle {
- @grid: 2 / 300px 70px;
- background: tan;
- --prog: 0%; --ttmsg1: '00:00'; --ttmsg2: '00:00'; --state: paused;
- }
- /* 时间信息 : 左 */
- @nth(1) {
- @place: 25% 70%;
- :after { content: var(--ttmsg1); }
- }
- /* 控制器 */
- @nth(2) {
- @size: 40px;
- @shape: clover 4;
- @place: 50% 35%;
- background: crimson;
- cursor: pointer;
- animation: rot 6s infinite linear var(--state);
- }
- /* 时间信息 : 右 */
- @nth(3) {
- @place: 75% 70%;
- :after { content: var(--ttmsg2); }
- }
- /* 进度条 */
- @nth(4) {
- @place: 50% 75%;
- @size: 100% 4px;
- background: gray;
- display: grid;
- place-items: center start;
- :before {
- content: '';
- width: var(--prog);
- height: 100%;
- background: crimson;
- }
- cursor: pointer;
- }
- @keyframes rot { to { transform: rotate(1turn); } }
- </css-doodle>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=488388710" autoplay loop></audio>
- <script>
- (function() {
- let script = document.createElement('script');
- script.src = 'https://unpkg.com/css-doodle@0.34.9/css-doodle.min.js';
- document.head.appendChild(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 = () => mplayer.style.setProperty('--state', aud.paused ? 'paused' : 'running');
- aud.addEventListener('play', mState, false);
- aud.addEventListener('pause', mState, false);
- aud.addEventListener('timeupdate', () => {
- mplayer.style.setProperty('--ttmsg1', `'${toMin(aud.currentTime)}'`);
- mplayer.style.setProperty('--ttmsg2', `'${toMin(aud.duration)}'`);
- mplayer.style.setProperty('--prog',`${100 * aud.currentTime / aud.duration}%`)
- });
- mplayer.onclick = (e) => {
- if(e.offsetX > 130 && e.offsetX < 170 && e.offsetY < 46) aud.paused ? aud.play() : aud.pause();
- if(e.offsetY > 46) aud.currentTime = aud.duration * e.offsetX / mplayer.offsetWidth;
- }
- })();
- </script>
复制代码
|
评分
-
| 参与人数 1 | 威望 +50 |
金钱 +100 |
经验 +50 |
收起
理由
|
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|