|
|

楼主 |
发表于 2024-9-16 22:27
|
显示全部楼层
本帖最后由 马黑黑 于 2024-9-16 22:33 编辑
为方便朋友们定制,现将一楼代码公布如下,后面有简单说明:- <svg version="1.1" width="400" height="400" viewBox="0 0 400 400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>
- <p><br><br><input id="mkcode" type="button" value="显示svg代码" onclick="txtbox.style.display='inline-block';" /></p>
- <p><br><br><textarea id="txtbox" style="min-width: 600px; min-height: 300px; display: none;"></textarea></p>
- <script>
- generateAni = (total) => {
- if(total % 2 === 0) total += 1;
- var str = '', dur = 6, delay = (dur / 6).toFixed(2);
- var size = svg.clientWidth / 2, r = 5;
- Array(total).fill(0).forEach((a,b) => {
- a = b + 1;
- var beginstr = b % 3 === 0 ? `a2.begin+${delay}s` : ( b % 2 === 0 ? `a1.begin+${delay}s` : `0s;a3.begin+${delay}s`);
- var color = `#${Math.random().toString(16).substring(2,8)}`;
- str += `<circle cx="${size}" cy="${size}" r="${r}" fill="${color}" transform="rotate(${360/total*b} ${size} ${size})"><animate id="a${a}" attributeName="cy" from="${size}" to="${size*4}" dur="${dur}s" begin="${beginstr}" /></circle>`;
- });
- return str;
- };
- var svg = document.querySelector('svg');
- svg.innerHTML = generateAni(60);
- txtbox.value = svg.outerHTML;
- </script>
复制代码
svg 的 width 和 height 属性值可以更改,建议宽高一致;更改后,viewBox 的宽高要跟随更改;
函数 generateAni() 内的 dur = 6 是动画周期时长,可以更改;r = 5 是小球半径,可以更改;
svg.innerHTML = generateAni(60); 这一行是运行函数,参数 60 表示生成 60 个小圆球,数量可以更改
|
评分
-
| 参与人数 1 | 威望 +50 |
金钱 +100 |
经验 +50 |
收起
理由
|
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|