U声U色 
					 
				 
				
				
									- UID29688
 
										- 粉丝1
 
										- 关注0
 
										- 发帖数1
 
										- 铜币12枚
 
										- 威望12点
 
										- 贡献0点
 
									 
								
				
								
				 
				
			 
		 | 
		
			
						
						
			
				楼主# 
								更多
				
								发布于:2014-01-18 13:46				
			 
						
				 
								
									 
				
				
								
				
					 
				
				 
				
					[tr][td]  有个读者问我如何用HTML5生成一个径向梯度色彩效果,而不使用图片。仔细思考下,其实这个问题一点都不难,请看代码。
 
 图片:1705418co84ogpgd7pmdd8.jpg  
   HTML
 
 
 
  HTML5 Radial Gradient | Script Tutorials
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   JS
 
 // Get angle color function function getAngleColor(angle) {  var color, d;
   if (angle < Math.PI * 2 / 5) { // angle: 0-72  d = 255 / (Math.PI * 2 / 5) * angle;  color = '255,' + Math.round(d) + ',0'; // color: 255,0,0 - 255,255,0  } else if (angle < Math.PI * 4 / 5) { // angle: 72-144  d = 255 / (Math.PI * 2 / 5) * (angle - Math.PI * 2 / 5);  color = (255 - Math.round(d)) + ',255,0'; // color: 255,255,0 - 0,255,0  } else if (angle < Math.PI * 6 / 5) { // angle: 144-216  d = 255 / (Math.PI * 2 / 5) * (angle - Math.PI * 4 / 5);  color = '0,255,' + Math.round(d); // color: 0,255,0 - 0,255,255  } else if (angle < Math.PI * 8 / 5) { // angle: 216-288  d = 255 / (Math.PI * 2 / 5) * (angle - Math.PI * 6 / 5);  color = '0,'+(255 - Math.round(d)) + ',255'; // color: 0,255,255 - 0,0,255  } else { // angle: 288-360  d = 255 / (Math.PI * 2 / 5) * (angle - Math.PI * 8 / 5);  color = Math.round(d) + ',0,' + (255 - Math.round(d)) ; // color: 0,0,255 - 255,0,0  }  return color; }
  // inner variables var iSectors = 360; var iSectorAngle = (360 / iSectors) / 180 * Math.PI; // in radians
  // Draw radial gradient function function drawGradient() {
   // prepare canvas and context objects  var canvas = document.getElementById('gradient');  var ctx = canvas.getContext('2d');
   // clear canvas  ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
   // save current context  ctx.save();
   // move to center  ctx.translate(canvas.width / 2, canvas.height / 2);
   // draw all sectors  for (var i = 0; i < iSectors; i++) {
   // start and end angles (in radians)  var startAngle = 0;  var endAngle = startAngle + iSectorAngle;
   // radius for sectors  var radius = (canvas.width / 2) - 1;
   // get angle color  var color = getAngleColor(iSectorAngle * i);
   // draw a sector  ctx.beginPath();  ctx.moveTo(0, 0);  ctx.arc(0, 0, radius, startAngle, endAngle, false);  ctx.closePath();
   // stroke a sector  ctx.strokeStyle = 'rgb('+color+')';  ctx.stroke();
   // fill a sector  ctx.fillStyle = 'rgb('+color+')';  ctx.fill();
   // rotate to the next sector  ctx.rotate(iSectorAngle);  }
   // restore context  ctx.restore(); }
  // initialization if(window.attachEvent) {  window.attachEvent('onload', drawGradient); } else {  if(window.onload) {  var curronload = window.onload;  var newonload = function() {  curronload();  drawGradient();  };  window.onload = newonload;  } else {  window.onload = drawGradient;  } }
   演示:http://www.script-tutorials.com/demos/317/index.html
  下载:HTML5 Radial Gradient.zip[/td][/tr]				  
							 
		 |