|
|
从整体思路上看,帖子的实现方式很得分。细节设计问题:
(一)旋转着的小球很难俘获,它们承担音频控制按钮不合时宜,可改为 svg 整体充当这个角色;
(二)CSS变量 --state 是音频与动画联动机制的主要开关,想通过它局部控制一些层面的动画不太现实,应另辟蹊径改变指针交互动画。
以下是建议的代码,以注释方式保留了原先的设计:
- <style>
- #tz { margin: 60px 0 30px calc(50% - 721px); width: 1280px; height: 700px; background: url('https://pic.imgdb.cn/item/67246dcad29ded1a8c16b6b1.jpg') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative;
- border-radius:32px; }
- /* 加一个CSS变量 --deg: 360deg; */
- #mysvg { --state: running; --deg: 360deg; position: absolute; left: calc(50% - 370px); top: calc(50% - 280px); width: 300px; height: 300px; animation: rot 20s linear infinite var(--state); cursor: pointer; }
- .ball { filter: drop-shadow(-10px -10px 20px darkred); transition: .4s; cursor: pointer; animation: flash .1s var(--delay) linear infinite alternate var(--state); }
- .ball:hover { r: 14; }
- /* #mysvg:hover { --state: paused; } 换成下一句 */
- #mysvg:hover { --deg: -720deg; }
- #tz::before { content: attr(data-lrc); position: absolute; right: -260px; bottom: 12px; width: 100%; height: 60px; text-align: center; font: normal 42px/60px LiSu; color: transparent; background: repeating-linear-gradient(to right, Moccasin,LightSkyBlue, Moccasin,LightSkyBlue, Moccasin) 50%/200px 60px; -webkit-background-clip: text; }
- @keyframes flash { to { opacity: .5; } }
- @keyframes rot { to { transform: rotate(var(--deg)); } }
- </style>
- <div id="tz" data-lrc="无间道">
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=2070130101" autoplay loop></audio>
- <svg id="mysvg"></svg>
- </div>
- <script>
- var sc = document.createElement('script');
- sc.src = 'https://638183.freep.cn/638183/web/js/svgdr.js';
- document.body.appendChild(sc);
- sc.onload = () => {
- var dr = _dr(mysvg), balls = [];
- dr.path('M210.00 150.00,286.26 199.59,195.96 188.57,222.50 275.57,160.42 209.09,124.82 292.80,120.00 201.96,38.92 243.20,93.62 170.52,5.00 150.00,93.62 129.48,38.92 56.80,120.00 98.04,124.82 7.20,160.42 90.91,222.50 24.43,195.96 111.43,286.26 100.41z', 'none','none').id('path');
- var len = path.getTotalLength();
- for(var i = 0, tt = 72; i < tt; i ++) {
- var point = path.getPointAtLength(len / tt * i);
- var color = 'Gainsboro',
- delay = Math.random() * i * -0.1;
- dr.circle(point.x,point.y,5,color).set('class','ball').style(`--delay: ${delay}s`);
- balls.push(dr.elm);
- }
- //balls.forEach(b => b.onclick = () => {
- // dr.svg.style.setProperty('--state', ['paused','running'][+aud.paused]);
- // aud.paused ? aud.play() : aud.pause();
- //});
- mysvg.onclick = () => {
- mysvg.style.setProperty('--state', ['paused','running'][+aud.paused]);
- aud.paused ? aud.play() : aud.pause();
- }
- aud.play().catch(_ => dr.svg.style.setProperty('--state', 'paused'));
- };
- var curkey = 0, lrcAr = [];
- var getAr = (text) => {
- var ar = text.trim().split('\n');
- ar.sort();
- var reg = /\[(\d+)[.:](\d+)[.:](\d+)\](.*)/;
- ar.forEach(item => {
- let result = item.match(reg);
- let tmsg = parseInt(result[1]) * 60 + parseInt(result[2]) + parseInt(result[3]) / 1000;
- lrcAr.push([tmsg, result[4].trim()]);
- });
- };
- aud.onseeked = () => curkey = 0;
- aud.ontimeupdate = () => {
- if(curkey > lrcAr.length - 1) return;
- if(aud.currentTime >= lrcAr[curkey][0]) {
- tz.dataset.lrc = lrcAr[curkey][1];
- curkey ++;
- }
- };
- var lrc = `
- [00:00.473]电影《无间道》主题曲
- [00:03.273]原唱:刘德华、梁朝伟
- [00:06.273]翻唱歌手:回歌肉
- [00:09.273]作词作曲:林夕、伍乐城
- [00:12.273]学习黑黑战争艺术代码
- [00:15.273]不我不愿意结束
- [00:17.742]我还没有结束
- [00:19.944]无止境的旅途
- [00:22.377]看着我没停下的脚步
- [00:25.704]已经忘了身在何处
- [00:29.984]谁能改变人生的长度
- [00:33.931]谁知道永恒有多么恐怖
- [00:37.434]谁了解生存往往比命运还残酷
- [00:41.603]只是没有人愿意认输
- [00:45.115]我们都在不断赶路忘记了出路
- [00:49.90]在失望中追求偶尔的满足
- [00:52.782]我们都在梦中解脱清醒的苦
- [00:56.698]流浪在灯火阑珊处
- [01:00.374]去不到终点回到原点
- [01:04.368]享受那走不完的路
- [01:23.327]谁能改变人生的长度
- [01:27.237]谁知道永恒有多么恐怖
- [01:30.672]谁了解生存往往比命运还残酷
- [01:34.716]只是没有人愿意认输
- [01:38.446]我们都在不断赶路忘记了出路
- [01:42.449]在失望中追求偶尔的满足
- [01:46.138]我们都在梦中解脱清醒的苦
- [01:50.96]流浪在灯火阑珊处
- [01:53.792]去不到终点回到原点
- [01:57.691]享受那走不完的路
- [02:05.950]一路上演出难得糊涂
- [02:09.693]一路上回顾难得麻木
- [02:13.520]在这条亲密无间的路
- [02:16.729]让我像你 你像我 怎么会孤独
- [02:20.405]我们都在不断赶路忘记了出路
- [02:24.291]在失望中追求偶尔的满足
- [02:27.994]我们都在梦中解脱清醒的苦
- [02:31.972]流浪在灯火阑珊处
- [02:35.685]既然没终点回到原点
- [02:39.620]我想我们都不不在乎
- `;
- getAr(lrc);
- </script>
复制代码
|
评分
-
| 参与人数 2 | 威望 +100 |
金钱 +200 |
经验 +100 |
收起
理由
|
小辣椒
| + 50 |
+ 100 |
+ 50 |
赞一个! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|