svg 例子

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1{ width:400px; height:400px; background:white;}
body{ background:black;}
</style>
<script>

window.onload = function(){
	
	var svgNS = 'http://www.w3.org/2000/svg';
	var oParent = document.getElementById('div1');
	var oSvg = document.getElementById('svg1');
	
	function createTag(tag,objAttr){	
		var oTag = document.createElementNS(svgNS , tag);	
		for(var attr in objAttr){
			oTag.setAttribute(attr , objAttr[attr]);
		}	
		return oTag;	
	}
	
	//var arrNum = [15,30,40,15];
	var arrNum = [23.61,17.10,16.05,15.40,11.72,14.95];
	var angle = 360;
	var sumNum = 0;
	var outerR = 120;
	var innerR = 70;
	var centerX = 200;
	var centerY = 200;
	var outerXY = [{x : 320 , y : 200}];
	var innerXY = [{x : 270 , y : 200}];
	var arrColor = ['red','blue','yellow','green','black','gray'];
	
	for(var i=0;i<arrNum.length;i++){
		var agNum = arrNum[i]/100 * angle;
		sumNum += agNum;
		
		if(i == arrNum.length-1){
			sumNum = 360;
		}
		
		var outerX = Math.cos( sumNum * Math.PI/180 ) * outerR + centerX;
		var outerY = Math.sin( sumNum * Math.PI/180 ) * outerR + centerY;
		outerXY.push({x : outerX , y : outerY});
		
		var innerX = Math.cos( sumNum * Math.PI/180 ) * innerR + centerX;
		var innerY = Math.sin( sumNum * Math.PI/180 ) * innerR + centerY;
		innerXY.push({x : innerX , y : innerY});
		
	}
	//console.log( outerXY );
	//console.log( innerXY );
	
	for(var i=0;i<outerXY.length;i++){
		
		if(i == outerXY.length-1){
			break;
		}
		
		var oPath = createTag('path',{fill : arrColor[i] , d : 'M'+outerXY[i].x+' '+outerXY[i].y+'A'+outerR+' '+outerR+' 0 0 1 '+outerXY[i+1].x+' '+outerXY[i+1].y+'L'+innerXY[i+1].x+' '+innerXY[i+1].y+'A'+innerR+' '+innerR+' 0 0 0 '+innerXY[i].x+' '+innerXY[i].y});
		
		var oAn = createTag('animate',{attributeName : 'd' , dur : '0.5' , from : 'M'+outerXY[i].x+' '+outerXY[i].y+'A'+outerR+' '+outerR+' 0 0 1 '+outerXY[i].x+' '+outerXY[i].y+'L'+innerXY[i+1].x+' '+innerXY[i].y+'A'+innerR+' '+innerR+' 0 0 0 '+innerXY[i].x+' '+innerXY[i].y,to:'M'+outerXY[i].x+' '+outerXY[i].y+'A'+outerR+' '+outerR+' 0 0 1 '+outerXY[i+1].x+' '+outerXY[i+1].y+'L'+innerXY[i+1].x+' '+innerXY[i+1].y+'A'+innerR+' '+innerR+' 0 0 0 '+innerXY[i].x+' '+innerXY[i].y});
		oPath.appendChild(oAn);
		oSvg.appendChild(oPath);
		
	}
	
};

</script>
</head>

<body>
<div id="div1">
	<svg id="svg1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
       <!--<path d="M50 100L200 200L100 100ZM300 100L300 300" stroke="black" stroke-width="5" fill="none"></path>-->
       <!--<path d="M50 100H200V200" stroke="black" stroke-width="5" fill="none"></path>-->
       <!--<path d="M50 100h200v200" stroke="black" stroke-width="5" fill="none"></path>-->
       <!--<path d="M100 100A150 100 50 1 1 200 200" stroke="black" stroke-width="5" fill="none"></path>-->
       <!--<path d="M150 150A100 100 0 0 1 250 150L225 175A50 50 0 0 0 175 175Z" stroke="black" stroke-width="5" fill="none"></path>-->
    </svg>
</div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值