HTML5版径向渐变梯度色彩
有个读者问我如何用HTML5生成一个径向梯度色彩效果,而不使用图片。仔细思考下,其实这个问题一点都不难,请看代码。
<!DOCTYPE html><html lang="en" ><head><meta charset="utf-8" /><meta name="author" content="Script Tutorials" /><title>HTML5 Radial Gradient | Script Tutorials</title>
<!-- add styles --><link href="css/main.css" rel="stylesheet" type="text/css" />
<!-- add script --><script src="js/script.js"></script></head><body><div class="container"><canvas id="gradient" width="500" height="500" tabindex="1"></canvas></div></body></html>
演示:http://www.script-tutorials.com/demos/317/index.html
下载:HTML5 Radial Gradient.zip
<!DOCTYPE html><html lang="en" ><head><meta charset="utf-8" /><meta name="author" content="Script Tutorials" /><title>HTML5 Radial Gradient | Script Tutorials</title>
<!-- add styles --><link href="css/main.css" rel="stylesheet" type="text/css" />
<!-- add script --><script src="js/script.js"></script></head><body><div class="container"><canvas id="gradient" width="500" height="500" tabindex="1"></canvas></div></body></html>
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
【HTML5版径向渐变梯度色彩】相关文章
2. HTML5每日一练之Canvas标签的应用-绘制径向渐变图形
3. 用 CSS3 和 JavaScript 制作径向动画菜单
4. 玩转CSS3色彩
6. 玩转CSS3色彩
8. HTML5每日一练之Canvas标签的应用-绘制线性渐变图形
本文来源:https://www.51html5.com/a686.html
﹝HTML5版径向渐变梯度色彩﹞相关内容
- CSS3线性渐变教程
- CSS渐变色效果的实现方法与效果演示
- 一款纯css3实现的颜色渐变按钮
- CSS设置DIV背景色渐变显示
- jQuery漂亮的渐变选择器生成CSS
- 坦克大战HTML5版——HTML5爱好者原创
- 微软开始接纳HTML5:首推HTML5版必应客户端
- 命令与征服HTML5版
- HTML5版宝石迷阵
- 又见HTML5版的俄罗斯方块