|
|

楼主 |
发表于 2024-9-14 18:41
|
显示全部楼层
本帖最后由 马黑黑 于 2024-9-14 18:43 编辑
为方便朋友做更多的细节定制,一楼源码公布如下:
- <style>
- .pa p { margin: 10px 0; }
- #wrapper { text-align: center; }
- #txtbox { width: 740px; height: 300px; word-break: break-all; padding: 8px; tab-size: 4; }
- #txtnum { width: 40px; }
- </style>
- <div class="pa">
- <p id="wrapper"></p>
- <p>
- <label for="txtnum">三角形数量 : </label>
- <input id="txtnum" type="number" value="7" cols="2" />
- <button id="reSetting" type="button" value="load">中</button>
- </p>
- <p><textarea id="txtbox" onfocus="this.select()"></textarea></p>
- </div>
- <script>
- var mysvg = document.querySelector('svg');
- mkColor = (opacity) => '#' + Math.random().toString(16).substring(2,8) + opacity;
- drawImage = (total,pa,codebox) => {
- var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
- svg.setAttribute('version', '1.1');
- svg.setAttribute('width', '300');
- svg.setAttribute('height', '300');
- svg.setAttribute('viewBox', '0 0 300 300');
- svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
- svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
- svg.setAttribute('style', 'border-radius: 50%;');
- var pstr = `\n\t<circle cx="150" cy="150" r="60" fill="${mkColor(60)}"></circle>`;
- total = parseInt(total) || 7;
- Array.from({length: total}).forEach((a,b) => {
- a = b + 1;
- var str1 = b > 0 ? `a${b}.begin` : `0s;b${total}.end+1s`, str2 = b > 0 ? `b${b}.end` : `a${total}.end+1s`;
- var angle = 360 / total * b;
- pstr += `\n\t<polygon points="100 150,200 150,150 100" fill="${mkColor(80)}" stroke="none" transform= "rotate(${angle} 150 150)">\n\t\t<animate id="b${a}" attributeName="points" to="150 0,100 -100,200 -100" dur="1s" begin="${str2}" fill="freeze"></animate>\n\t\t<animate id="a${a}" attributeName="points" to="100 150,200 150,150 100" dur="1s" begin="${str1}" fill="freeze"></animate>\n\t</polygon>\n`;
- });
- svg.innerHTML = pstr;
- pa.prepend(svg);
- txtbox.value = svg.outerHTML;
- };
- drawImage(txtnum.value,wrapper,txtbox);
- reSetting.onclick = () => {
- var svg = wrapper.querySelector('svg');
- if(svg) wrapper.removeChild(svg);
- drawImage(txtnum.value,wrapper,txtbox);
- };
- </script>
复制代码
|
评分
-
| 参与人数 2 | 威望 +80 |
金钱 +160 |
经验 +80 |
收起
理由
|
花飞飞
| + 30 |
+ 60 |
+ 30 |
很给力! |
红影
| + 50 |
+ 100 |
+ 50 |
赞一个! |
查看全部评分
|