HTML5的渐变色 渐变的两种类型 createLinearGradient 和createRadialGradient
今天又再看了html5的颜色渐变API,发现没有第一次看那么复杂。
不过我对这个颜色渐变存在着一个疑惑就是两种色带之间,那段是属于两种颜色混合的,有点模糊。
比如从红色变成黄色,在红与黄之间的那个地方,不会是纯色的红和黄,我一开始不是很明白,现在我是理解的:渐变颜色嘛,字面上的意思,就是渐变,在这两种颜色之间,由一种颜色渐变过渡到另一种颜色。
一、创建渐变颜色对象的步骤蛮简单的,线性渐变比径向渐变少了两个参数而已。具体步骤是这样的:
1、获取到你的canvas画布后,我们需要创建颜色渐变对象 var gradient
2、设置要渐变的颜色带 addColorStop(颜色带的所在点,"颜色")
3、将颜色渐变对象赋值给填充类型 fillStyle
4、进行绘制
ok了!
<body>
<!--
作者:1107989194@qq.com
时间:2014-04-12
描述:渐变色 linear radial
-->
<canvas id="myCanvas" width="300" height="150" style="border: 1px solid black"></canvas>
<script>
var myCanvas = document.getElementById("myCanvas");
var context = myCanvas.getContext("2d");
var gradient = context.createLinearGradient(0,0,myCanvas.width,0); //创建颜色渐变对象 gradient.addColorStop(0,'blue'); //设置颜色停止点(过渡颜色所在位置)
gradient.addColorStop(0.25,'white');
gradient.addColorStop(0.5,'purple');
gradient.addColorStop(0.75,'red');
gradient.addColorStop(1.0,'yellow'); context.fillStyle = gradient; //把渐变对象赋值给填充类型
context.fillRect(0,0,myCanvas.width,myCanvas.height); //绘制图形
</script>
<!--
作者:1107989194@qq.com
时间:2014-04-12
描述:径向渐变
-->
<canvas id="myCanvas2" width="300" height="150" style="border: 1px solid black">换个浏览器呗</canvas>
<script>
var myCanvas2 = document.getElementById("myCanvas2");
var context2 = myCanvas2.getContext("2d");
//var gradient2 = context.createRadialGradient(0,0,myCanvas2.width,myCanvas2.width,myCanvas2.height,myCanvas2.height); //创建颜色径向渐变对象
var gradient2 = context2.createRadialGradient(myCanvas2.width/2,myCanvas2.height/2,0,myCanvas2.width/2,myCanvas2.height/2,100); //创建颜色径向渐变对象(一个圆从中间向四周径向渐变) gradient2.addColorStop(0,'blue'); //设置颜色停止点(过渡颜色所在位置)
gradient2.addColorStop(0.25,'white');
gradient2.addColorStop(0.5,'purple');
gradient2.addColorStop(0.75,'red');
gradient2.addColorStop(1.0,'yellow'); context2.fillStyle = gradient2;
context2.fillRect(0,0,myCanvas2.width,myCanvas2.height);
</script>
</body>
两种颜色渐变函数的参数说明:
context.createLinearGradient(x0,y0,x1,y1);
| 参数 | 描述 | 
|---|---|
| x0 | 渐变开始点的 x 坐标 | 
| y0 | 渐变开始点的 y 坐标 | 
| x1 | 渐变结束点的 x 坐标 | 
| y1 | 渐变结束点的 y 坐标 | 
context.createRadialGradient(x0,y0,r0,x1,y1,r1);
| 参数 | 描述 | 
|---|---|
| x0 | 渐变的开始圆的 x 坐标 | 
| y0 | 渐变的开始圆的 y 坐标 | 
| r0 | 开始圆的半径 | 
| x1 | 渐变的结束圆的 x 坐标 | 
| y1 | 渐变的结束圆的 y 坐标 | 
| r1 | 结束圆的半径 | 
Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 createLinearGradient() 方法、createRadialGrradient()方法。
注释:Internet Explorer 8 或更早的浏览器不支持 <canvas> 元素。
关于径向渐变,我自己觉得最简单的理解就是:
例如我们要径向渐变一个圆,从圆心往四周颜色渐变,那么圆心所在的那个圆的坐标就是(x1,y1) r1=0,渐变的大圆的坐标(x2,y2) r2=r(r为圆的半径)。
这是上面径向渐变的代码的效果截图:
从圆心(blue)——>四周(yellow)

HTML5的渐变色 渐变的两种类型 createLinearGradient 和createRadialGradient的更多相关文章
- .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格
		一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ... 
- AspNetWebApi管线中如果定义两种类型的消息处理程序(全局/路由)
		AspNetWebApi管线中如果定义两种类型的消息处理程序(全局/路由) 在AspNetWebApi管线中存在两种类型的消息处理程序(Message Handler) 1.全局消息处理程序,所有的请 ... 
- apache软件no_ssl和openssl两种类型的区别
		apache软件同一版本有两种类型:no_ssl和openssl: openssl多了个ssl安全认证模式,它的协议是HTTPS而不是HTTP,这就是带有SSL的服务器与一般网页服务器的区别了. 一般 ... 
- 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射
		从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ... 
- JavaScript中两种类型的全局对象/函数【转】
		Snandy Stop, thinking is the essence of progress. JavaScript中两种类型的全局对象/函数 这里所说的JavaScript指浏览器环境中的包括宿 ... 
- Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型
		转自:https://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 概述 LOB 代表大对象数据,包括 BLOB 和 CL ... 
- 块级标签与预格式化文本标签----------大多数XHTML可以表示为两种类型的标签:块标签(block tag)和内联标签(inline tag)
		<html> <head> <meta charset="utf-8"> <title>块级标签</title> < ... 
- github page的两种类型
		1. 什么是Github ? Github 官方主页 简单说,Github是一个基于git的社会化代码分享社区. 你可以在Github上创建免费的远程仓库(remote repository),分享你 ... 
- HTML5 客户端存储数据的两种方式
		HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ... 
随机推荐
- 简单的介绍下WPF中的MVVM框架
			最近在研究学习Swift,苹果希望它迅速取代复杂的Objective-C开发,引发了一大堆热潮去学它,放眼望去各个培训机构都已打着Swift开发0基础快速上手的招牌了.不过我觉得,等同于无C++基础上 ... 
- KMP模板与讲解
			读书笔记终于写完了,写一下我对KMP的理解. KMP的思想就是尽量利用已经得到的信息,来降低时间复杂度,已经得到的信息存放在next数组里.算法确实很难理解,所以很难讲解..举个例子来说吧. 设字符串 ... 
- SimpleMembership: The future of membership for ASP.NET
			http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal- ... 
- 支付宝Demo 报错
			支付宝SDK-------DEMO第一次编译肯定是会报错的: 修正的方法为: 打开项目属性->Build Settings 找到 Library SearchPaths 看见里面的参数了 ... 
- python学习之--自定义函数:
			Python之--自定义函数: 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 以下自定义 ... 
- bzoj 3527: [Zjoi2014]力 快速傅里叶变换
			题意: 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. fft的那一堆东西还是背不到啊...这次写虽说完全自己写的,但是还是在参见了以前fft程序的情况下调了很久,主要在如下几点 ... 
- spoj VFMUL FFT快速傅立叶变换模板题
			题意:求两个数相乘. 第一次写非递归的fft,因为一个数组开小了调了两天TAT. #include<iostream> #include<cstring> #include&l ... 
- xapian安装
			xapian安装:$ su enter your root password # rpm -ivh http://rpm.eprints.org/rpm-eprints-org-key-1-1.noa ... 
- 【HDOJ】2853 Assignment
			最小费用最大流可解最优解.至于dif如何解,可以把w扩大100倍,如果mission编号和排列P相等则对w+1,然后建立网络流.对结果取模100可以得到没有改变mission的company数目,用c ... 
- 老的acm & oj学习站点
			1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ... 
