|
|
请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2023-11-23 08:28 编辑
以下代码是在原来代码的基础上略作修改,运行后可以生成svg完整代码(生成的代码格式未做处理,如果需要格式化代码请自行整理):
- <div id="svgwrapper">
- <svg id="ssvg" width="200" height="200">
- <circle id="yuan" cx="150" cy="150" r="5" fill="snow" />
- </svg>
- </div>
- <output id="outData"></output>
- <script>
- let sepan = () => {
- /* 彩虹颜色数组 */
- let colors = ['red','orange','yellow','green','cyan','blue','purple'];
- /* 获取svg宽高 */
- let ww = ssvg.getAttribute('width') || 200,
- hh = ssvg.getAttribute('height') || 200;
- /* 圆心坐标和圆半径取svg宽高最短边值 */
- let c = r = ww > hh ? hh / 2 : ww / 2;
- let a = 360 / 7; /* 角度 : 圆周七等分 */
- yuan.setAttribute('cx',c); /* 小圆点圆心X坐标 */
- yuan.setAttribute('cy',c); /* 小圆点圆心Y坐标 */
- /* 用 for 循环依次绘制七个三角形 */
- for(j = 0; j < 7; j++) {
- let color = colors[j]; /* 取颜色 */
- let a1 = a * j; /* 三角形等腰边1与圆周交点的角度 */
- let a2 = a1 + a; /* 三角形等腰边2与圆周交点的角度 */
- /* 下面使用余弦正弦函数分别获取交点1和交点2的XY坐标值 */
- let x1 = (c + r * Math.cos(Math.PI / 180 * a1)).toFixed(2),
- x2 = (c + r * Math.cos(Math.PI / 180 * a2)).toFixed(2),
- y1 = (c + -r * Math.sin(Math.PI / 180 * a1)).toFixed(2),
- y2 = (c + -r * Math.sin(Math.PI / 180 * a2)).toFixed(2);
- /* 创建svg path元素 */
- let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
- /* 设置 path d 路径属性值 */
- path.setAttribute('d', `M ${c} ${c} L${x1} ${y1} A ${c} ${c} 0 0 1 ${x2} ${y2} L${c} ${c}`);
- /* 设置 path 填充颜色 */
- path.setAttribute('fill', color);
- /* 将 path 添加到 id="yuan" 的circle的前面(放后面圆点会被覆盖) */
- ssvg.insertBefore(path, yuan);
- }
- };
- sepan();
- outData.innerText = '\nsvg代码 : \n' + svgwrapper.innerHTML;
- </script>
复制代码 可以到以下链接 pencil code (52qingyin.cn) 运行上述代码。注意根据需要修改 svg 标签的 width 和 height 尺寸,以便获得自己所设计的结果。
|
评分
-
| 参与人数 3 | 威望 +115 |
金钱 +230 |
经验 +115 |
收起
理由
|
樵歌
| + 50 |
+ 100 |
+ 50 |
赞一个! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
幸运草
| + 15 |
+ 30 |
+ 15 |
赞一个! |
查看全部评分
|