H5(三)
Canvas(画布)
基本内容
简单来说,HTML5提供的新元素<canvas>
Canvas在HTML页面提供画布的功能
在画布中绘制各种图形
Canvas绘制的图形与HTML页面无关
无法通过DOM获取绘制的图形
无法为绘制的图形绑定DOM事件
只能使用Canvas提供的API
Canvas用途
在HTML页面中绘制图表(例如柱状图、饼状图等)
网页游戏 - Flash技术
使用HTML5中的Canvas
如何使用Canvas
在HTML页面中定义<canvas>元素
在javascript代码中
获取<canvas>元素
创建画布对象
getContext('2d')方法
使用Canvas提供的API
绘制图形
绘制矩形
fillRect(x,y,width,height) - 实心矩形
x和y - 矩形的左上角坐标值
width - 设置矩形的宽度
height - 设置彗星的高度
strokeRect(x,y,width,height) - 空心矩形
clearRect(x,y,width,height)
清除指定区域的矩形
设置颜色
fillStyle - 设置填充颜色
strokeStyle - 设置描边颜色
globalAlpha - 设置透明度(0-1)
设置渐变
线型渐变 - createLinearGradient(x1,y1,x2,y2)
具有基准线 - 起点(x1,y1)和终点(x2,y2)
扇形(射线)渐变 - createRadialGradient(x1,y1,r1,x2,y2,r2)
具有柱形(锥形) - 两个圆的面积
参数
x1和y1 - 第一个圆的圆心坐标值
r1 - 第一个圆的半径
x2和y2 - 第二个圆的圆心坐标值
r2 - 第二个圆的半径
绘制图形
绘制文字
方法
fillText(text,x,y) - 实心文字
text - 绘制的文字内容
x和y - 绘制的坐标值
strokeText(text,x,y) - 空心文字
属性
font - 类似于CSS中的font属性
textAlign - 设置文字的水平方向对齐
left - 左对齐
center - 水平居中
right - 右对齐
textBaseline - 设置文字的垂直方向对齐
top - 顶部对齐
middle - (垂直)居中对齐
bottom - 底部对齐
hanging - 悬挂基线
alphabetic - 字母基线
注意
无论是水平方向还是垂直方向对齐,基准线对齐,并不是文字对齐
无论是水平方向还是垂直方向对齐,并不是必要的属性(不使用也是可以的)
阴影效果
shadowColor - 设置阴影颜色
shadowOffsetX - 设置水平方向阴影
shadowOffsetY - 设置垂直方向阴影
shadowBlur - 设置阴影的模糊程度
创建路径
(标识)方法
beginPath() - 表示开始创建路径
closePath() - 表示结束创建路径
设置方法
rect(x,y,width,height) - 设置矩形形状
x和y - 设置矩形的左上角坐标值
width和height - 设置矩形的宽度和高度
arc(x,y,radius,startAngle,endAngle,direction) - 设置圆形形状
x和y - 设置圆形的圆心坐标值
radius - 设置圆形的半径
startAngle和endAngle - 设置圆形的起始位置
direction - 按照顺时针或逆时针绘制
绘制方法
stroke() - 绘制轮廓
fill() - 绘制填充
绘制线条(直线和折线、多边形) - 创建路径
moveTo(x,y) - 设置这条线的起点坐标值
lineTo(x,y) - 设置这条线的终点(折点)坐标值
设置线条
lineWidth - 设置线条的宽度
默认值为1(px)
lineCap - 设置线条端点的形状
butt - 默认值,平直
round - 圆角
square - 正方向
lineJoin - 设置两条线焦点的形状
miter - 默认值,尖角
round - 圆角
bevel - 斜角
miterLimit - 配合lineJoin使用
lineJoin设置为miter,该属性值设置尖角的延伸范围
Canvas处理图片
绘制图片
drawImage(img,x,y) - 按照图片原大小加载
img - 当前加载(绘制)的图片
x和y - 绘制图片的坐标值(左上角)
drawImage(img,x,y,width,height) - 按照指定大小加载图片
img - 当前加载(绘制)的图片
x和y - 绘制图片的坐标值(左上角)
width和height - 设置绘制图片显示的宽度和高度
注意
必须保证图片加载完毕(onload事件)后,再绘制图片
平铺图片
createPattern(img,type)
img - 平铺的图片
type - 平铺的方式
repeat - 平铺
no-repeat - 不平铺
repeat-x - 水平方向平铺
repeat-y - 垂直方向平铺
注意
必须保证图片加载完毕(onload事件)后,再绘制图片
切割图片
clip() - 切割(按照创建路径使用)
画布方法
scale(x,y) - 缩放(缩小或放大)
x - 表示水平方向的缩放
y - 表示垂直方向的缩放
参数的取值
如果为1的话,表示不缩放(原大小)
如果小于1的话,表示缩小
如果大于1的话,表示放大
translate(x,y) - 重新定位(x,y)
x和y - 新的坐标值
注意 - x和y是相对于上次定位坐标值
rotate(旋转角度) - 旋转画布
公式为 degrees Math.PI / 180;
Chart.js - Canvas的JS库
作用 - 提供各种图表
如何使用
在HTML页面中引入Chart.js文件
在HTML页面中定义<canvas>元素
在javascript代码中
获取<canvas>元素
创建画布对象
var context = canvas.getContext("2d");
通过画布对象,创建Chart对象
var chart = new Chart(context);
利用Chart对象调用API方法
var data = [];
chart.Pie(data);
提供6种图表
柱状图 - Bar(data,options)
饼状图 - Pie(data,options)
曲线图 - Line(data,options)
环形图 - Doughnut(data,options)
雷达图 - Radar(data,options)
极地区域图 - PolarArea(data,options)
H5(三)的更多相关文章
- PC/APP/H5三端测试的相同与不同
随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?总结如下: 首先谈一谈相同之处: 一,针对同一个系统功能的测试,三 ...
- PC、APP、H5三端测试的相同与不同
随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?笔者总结如下: 首先谈一谈相同之处... 一,针对同一个系统功能的 ...
- PC、APP、H5三端测试的区别
一,针对同一个系统功能的测试,三端所测的业务流程是一样的 二,一般情况下手机端和PC端都对应一套后台服务,比如说笔者公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务.交易服 ...
- Css--深入学习之三角形气泡窗
本文是作者从别的网站和文章学习了解的知识,简单做了个笔记,想要学习更多的可以参考这里:[css进阶]伪元素的妙用--单标签之美,奇思妙想 一.三角形的实现 首先,先画了三角形,后面二.三都是根据这个 ...
- SOA架构改造简单记录
前端支持PC.Mobile.H5三个平台 nginx做负载均衡,主备机,keepalived,检测脚本,master和slave切换时完成相关工作: web做集群,web仅仅是web,与后端服务模块采 ...
- 阿里移动云专场专题.md
小激动 一年一度的阿里云栖大会是我们开发者的盛会,带着着激动的心情参加了这次开发者盛会,二话不说进入会场就被震感到了,先来张图聊表敬意. 主会场马云爸爸还是很有范的,将未来定义为无法定义,在这里宣布成 ...
- html2canvas - 项目中遇到的那些坑点汇总(更新中...)
截图模糊 原理就是讲canvas画布的width和height放大两倍. 后来学习canvas的时候,才了解到这种写法不同于css的宽高设置, 因为css里的只是展示画布显示的大小,不像这样是c ...
- CSS基础和布局复习
table布局 div布局优势 浏览器支持完善 表现和结构分离 样式设计控制功能强大 可以继承,层叠处理 Transitional // 松散过度型 Strict //严格型 Fram ...
- H5横向三栏布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
随机推荐
- js时间戳与日期格式之间的转换
转换方法: var date = new Date(时间戳); //获取一个时间对象 注意:如果是uinx时间戳记得乘于1000. 比如php函数time()获得的时间戳就要乘于1000 //获取时 ...
- css悬浮
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title&g ...
- web前端基础知识-(六)web框架
一.web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:ut ...
- Nginx在线服务状态下平滑升级或新增模块的详细操作
今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了 1:查看现有的nginx编译参数 /usr/local/nginx/sbin/ng ...
- React项目(一):markdown编辑器
在之前的React官网教程中,提到了用Remarkable为插件的markdown评论框.现在就来正儿八经地用另外一个插件marked.js做一个markdown编辑器吧! 准备工作 或许在做之前,应 ...
- 为你的pip更换一个国内的镜像源
为你的pip更换一个国内的镜像源 是否常常为pypi官网被无故和谐掉导致pip不能下载python的各个包而痛心疾首? 是否常常在深夜里看着pip install 下载包的速度慢如乌龟而长吁短叹? 是 ...
- C语言查缺补漏
7.用ucontext实现简单的用户空间协作多线程 转 http://blog.chinaunix.net/uid-26000137-id-3973004.html http://blog.csdn. ...
- bat脚本参数 if goto choice for使用的学习笔记。
写过几次bat脚本,但一直没有总结,最近找到一个网页介绍bat,总结得很好,转自 http://www.jb51.net/article/49627.htm: 本文只总结我不会的,全面的看原网页就可以 ...
- Git 账户认证的一些问题
Mac被水浇了之后,只好用Window 开发了.但是在往Github上提交代码出现了些问题. 1. 提交时总是出现弹出框提示账号认证 之前Mac没有出现过这问题,所以有些怀疑Windows开发环境不友 ...
- Makefile的编写
makefile介绍 makefile的功能是管理源文件的编译链接,在makefile我们可以定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能 ...