这(不)正是我想要得到的:
https://i.stack.imgur.com/nMbtl.png
我的代码:
Run Code Online (Sandbox Code Playgroud)<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="300"> <circle class="circle_shadow" cx="50%" cy="50%" r="6.6%" fill="#333333" /> <circle class="circle_shadow" cx="50%" cy="50%" r="11%" fill="none" stroke="#333333" stroke-width="7%" /> <circle class="circle_shadow" cx="50%" cy="50%" r="19%" fill="none" stroke="#333333" stroke-width="7%" /> <circle class="circle_shadow" cx="50%" cy="50%" r="27%" fill="none" stroke="#333333" stroke-width="7%" /> <circle class="circle_shadow" cx="50%" cy="50%" r="35%" fill="none" stroke="#333333" stroke-width="7%" /> </svg>
尝试绘制路径弧而不是圆
\n\n您可以使用圆弧的起始位置和结束位置来完成所需的 \xe2\x80\x9ccuts\xe2\x80\x9d 。
\n\n这是一个 javascript 辅助函数,可生成同心弧的路径数据。
\n\nfunction regularArcData(cx,cy,radius,startDegrees,endDegrees,isCounterClockwise){\n\n var offsetRadians=0; // -Math.PI/2 for 12 o\'clock\n var sweepFlag=(isCounterClockwise)?0:1;\n var startRadians=offsetRadians+startDegrees*Math.PI/180;\n var endRadians=offsetRadians+endDegrees*Math.PI/180;\n var largeArc=( (endRadians-startRadians) % (2*Math.PI) ) > Math.PI ? 1 : 0;\n var startX=parseInt(cx+radius*Math.cos(startRadians));\n var startY=parseInt(cy+radius*Math.sin(startRadians));\n var endX= parseInt(cx+radius*Math.cos(endRadians));\n var endY= parseInt(cy+radius*Math.sin(endRadians));\n var space=" ";\n var arcData="";\n\n arcData+="M"+space+startX +space\n +startY +space;\n arcData+="A"+space+radius +space\n +radius +space\n +offsetRadians +space\n +largeArc +space\n +sweepFlag +space\n +endX +space\n +endY;\n return(arcData);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n这是代码和小提琴: http ://jsfiddle.net/m1erickson/VbqnW/
\n\n<!doctype html>\n<html>\n<head>\n<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->\n<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>\n\n<style>\n body{ background-color: ivory; }\n</style>\n\n<script>\n $(function(){\n\n var svgns="http://www.w3.org/2000/svg";\n\n var svg=document.createElementNS(svgns,"svg");\n svg.setAttribute(\'width\', \'600px\');\n svg.setAttribute(\'height\', \'600px\');\n document.body.appendChild(svg);\n\n var cx=150;\n var cy=150;\n\n addPath(svg,"arc1","transparent","red", 15,regularArcData(cx,cy,50,0,135,false));\n addPath(svg,"arc2","transparent","green",15,regularArcData(cx,cy,65+2,0,180,false));\n addPath(svg,"arc3","transparent","blue", 15,regularArcData(cx,cy,80+4,0,215,false));\n addPath(svg,"arc4","transparent","orange", 15,regularArcData(cx,cy,95+6,0,250,false));\n addPath(svg,"arc5","transparent","purple", 15,regularArcData(cx,cy,110+8,0,270,false));\n\n\n function addPath(theSvg,id,fill,stroke,strokeWidth,data){\n var path=document.createElementNS(svgns,"path");\n path.setAttribute("id",id);\n path.setAttribute("fill",fill);\n path.setAttribute("stroke",stroke);\n path.setAttribute("stroke-width",strokeWidth);\n path.setAttribute("d",data);\n theSvg.appendChild(path);\n\n var pathSvg=""\n pathSvg+="\\n"\n +"<path id=\'"+id\n +"\' fill=\'"+fill\n +"\' stroke=\'"+stroke\n +"\' stroke-width=\'"+strokeWidth\n +"\' d=\'"+data+"\'/>";\n $("#paths").text($("#paths").text()+pathSvg);\n }\n\n\n function regularArcData(cx,cy,radius,startDegrees,endDegrees,isCounterClockwise){\n\n var offsetRadians=0; // -Math.PI/2 for 12 o\'clock\n var sweepFlag=(isCounterClockwise)?0:1;\n var startRadians=offsetRadians+startDegrees*Math.PI/180;\n var endRadians=offsetRadians+endDegrees*Math.PI/180;\n var largeArc=( (endRadians-startRadians) % (2*Math.PI) ) > Math.PI ? 1 : 0;\n var startX=parseInt(cx+radius*Math.cos(startRadians));\n var startY=parseInt(cy+radius*Math.sin(startRadians));\n var endX= parseInt(cx+radius*Math.cos(endRadians));\n var endY= parseInt(cy+radius*Math.sin(endRadians));\n var space=" ";\n var arcData="";\n\n arcData+="M"+space+startX +space\n +startY +space;\n arcData+="A"+space+radius +space\n +radius +space\n +offsetRadians +space\n +largeArc +space\n +sweepFlag +space\n +endX +space\n +endY;\n return(arcData);\n }\n\n\n }); // end $(function(){});\n</script>\n\n</head>\n\n<body>\n <textarea id="paths" cols=130 rows=7>Paths</textarea><br/>\n</body>\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
3434 次 |
最近记录: |