评论资讯 [ 总 424 则 ]
·了了 - 2024-12-18 21:32
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
友情链接
网站统计
js+svg绘制多重动画六边形
在单个 svg path 路径六边形动画基础上加以改进:① 每一个 path 包裹之下的两个 animate 动画,begin 属性除第一组动画为 0s 即立即执行外,其余的动画均等上一个动画开始后加 1s 开始执行。② <user> 标签变为 6*6=36 个,6个一组,每一组对标一个路径;旋转分两种情形,1、3、5 按 60度*序号 获取角度值,2、4、6 按 60度*序号+30 获取角度值。以下是实现代码和演示效果、XML svg代码:
<svg id="hsvg" width="320" height="320" viewBox="0 0 320 320" fill="none" stroke="#008000" stroke-linecap="round"></svg> <script> drawHexagon = (total) => { let pathstr = '\n\t<defs>', usestr = ''; Array(total).fill(0).forEach((id,idx) => { id = idx + 1; let bstr = idx === 0 ? '0s' : `p1.begin+${idx}s`; pathstr += ` <path id="r${id}"> <animate id="p${id}" attributeName="d" values="m160,160l0,0 0,0;m130,110l30,-17 30,17;m130,60l30,-17 30,17;m160,20l0,0 0,0" dur="6s" repeatCount="indefinite" begin="${bstr}"/> <animate attributeName="stroke-width" values="0;4;4;4;0" dur="6s" repeatCount="indefinite" begin="${bstr}"/> </path>`; Array(total).fill(0).forEach((u,k) => { u = k + 1; let angle = id % 2 === 0 ? 360 / total * k + 30 : 360 / total * k; usestr += `\n\t<use xlink:href="#r${id}" transform="rotate(${angle} 160 160)"></use>`; }); }); pathstr += '\n\t</defs>\n'; return pathstr + usestr + '\n'; }; hsvg.innerHTML = drawHexagon(6); </script>
XML代码:
前一篇: js+svg绘制动画六边形
下一篇: svg文本描边动画彩色版
发表评论:
评论列表 [3条]
#3 | 飞飞 于 2024-9-12 19:35 发布: 再来说一句良心话,它是真的好看啊,比SVG的更漂亮。。层数还可以灵活设置。。
#2 | 小希 于 2024-9-12 19:33 发布: 果然昨晚看了十秒钟就溜走是明智的。。今天老师成品都出来了,这么多个眼生的单词,小白跟本啃不动。。。。。知难而退,我决定躺平,直接套用~~
#1 | 悄然 于 2024-9-12 09:33 发布: 漂亮!你就是最帅的白大神,……