整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

javascript自学记录:canvas绘图

于学习js是为爬虫服务,所以canvas绘图学习并不完整。

第15章 使用Canvas绘图



15.1 基本用法

HTML文件中需要有canvas元素,两标签之间的文字是浏览器不支持时显示的。

<canvas id="drawing" width="200" height="200">A drawing of something.</canvas>

要在网页中显示canvas绘制的图像,只需要在画布上绘制图形即可:

var drawing = document.getElementById("drawing");

if (drawing.getContext){
    var context = drawing.getContext("2d");

    context.fillStyle = "#0000ff";
    context.fillRect(10,10,50,50);

    context.fillStyle = "rgba(0,0,255,0.5)";
    context.fillRect(30,30,50,50);
}

也可以通过toDataURL输出到图像,并创建新的img:

var drawing = document.getElementById("drawing");

// 取得图像的数据URI
var imgURI = drawing.toDataURL("image/png");
// 显示图像

var image = document.createElement("img");
image.src = imgURI;
document.body.appendChild(image);

15.2 2D上下文

15.2.1 填充和描边

可通过strokeStyle和fillStyle属性进行设置

var context = drawing.getContext("2d");
context.strokeStyle = "red";
context.fillStyle = "#0000ff";

设置属性有以下几种:

"red"
"#0000ff"
"rgba(0,0,255,0.5)"
context.strokeStyle = "red";

15.2.2 绘制矩形

绘制矩形有fillRect(带有填充)、strokeRect(无填充)、clearRect(除清矩形区域)三个方法,单位为像素:

var drawing = document.getElementById("drawing");

if (drawing.getContext){
    var context = drawing.getContext("2d");
    // 红色的矩形

    context.fillStyle = "#ff0000";
    context.fillRect(10,10,50,50);
    // 半透明的矩形

    context.fillStyle = "rgba(0,0,255,0.5)";
    context.fillRect(30,30,50,50);
}

15.2.3 绘制路径

以beginPath()方法开始,然后接着绘制以下线条:

  • arc(x, y, radius, startAngle, endAngle, counterclockwise):以(x,y)为圆心绘制一条弧线,弧线半径为radius,起始和结束角度(用弧度表示)分别为startAngle 和endAngle。最后一个参数表示
  • startAngle 和endAngle 是否按逆时针方向计算,值为false表示按顺时针方向计算。
  • arcTo(x1, y1, x2, y2, radius):从上一点开始绘制一条弧线,到(x2,y2)为止,并且以给定的半径radius 穿过(x1,y1)。
  • bezierCurveTo(c1x, c1y, c2x, c2y, x, y):从上一点开始绘制一条曲线,到(x,y)为止,并且以(c1x,c1y)和(c2x,c2y)为控制点。
  • lineTo(x, y):从上一点开始绘制一条直线,到(x,y)为止。
  • moveTo(x, y):将绘图游标移动到(x,y),不画线。
  • quadraticCurveTo(cx, cy, x, y):从上一点开始绘制一条二次曲线,到(x,y)为止,并且以(cx,cy)作为控制点。
  • rect(x, y, width, height):从点(x,y)开始绘制一个矩形,宽度和高度分别由width 和height 指定。这个方法绘制的是矩形路径,而不是strokeRect()和fillRect()所绘制的独立的形状。

路径创建完以后,有多种结尾方式:

  • closePath()会自动与起点连接;
  • fill()会自动以fillStyle填充区域;
  • stroke()会对线条描边;
  • clip()创建一个剪切区域。

15.2.4 绘制文本

方法:

fillText()
strokeText()

属性:

font
textAlign start、end、left、right、center
textBaseline top、hanging、middle、alphabetic、ideographic、bottom

前没有使用过前端java Script插件,所以一直认为很难来着,今天突然在网上搜寻了一波,21种前端java Script插件,我选择的是Echarts。点击打开链接

ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9/10/11,chrome,firefox,Safari等),底层依赖轻量级的Canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。

支持折线图(区域图)、柱状图(条状图)、散点图(气泡图)、K线图、饼图(环形图)、雷达图(填充雷达图)、和弦图、力导向布局图、地图、仪表盘、漏斗图、事件河流图等12类图表,同时提供标题,详情气泡、图例、值域、数据区域、时间轴、工具箱等7个可交互组件,支持多图表、组件的联动和混搭展现。

1.创建一个index.html,如下:

[html] view plain copy

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <metacharset="utf-8">

  5. <title>ECharts</title>

  6. <!-- 引入 echarts.js -->

  7. <scriptsrc="echarts.js"></script>

  8. </head>

  9. <body>

  10. <!-- 为ECharts准备一个具备大小(宽高)的Dom -->

  11. <divid="main"style="width: 600px;height:400px;"></div>

  12. <scripttype="text/javascript">

  13. // 基于准备好的dom,初始化echarts实例

  14. var myChart = echarts.init(document.getElementById('main'));

  15. // 指定图表的配置项和数据

  16. var option = {

  17. title: {

  18. text: 'ECharts 入门示例'

  19. },

  20. tooltip: {},

  21. legend: {

  22. data:['销量']

  23. },

  24. xAxis: {

  25. data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]

  26. },

  27. yAxis: {},

  28. series: [{

  29. name: '销量',

  30. type: 'bar',

  31. data: [5, 20, 36, 10, 10, 20]

  32. }]

  33. };

  34. // 使用刚指定的配置项和数据显示图表。

  35. myChart.setOption(option);

  36. </script>

  37. </body>

  38. </html>

其中需要导入echarts,这个从官网上下,寻找适合的,链接在上面。

2.然后通过修改上面一列的属性,构建图标,上述图表如下:

击查看瀑布特效

HTML5+javascript打造瀑布特效,canvas绘图!


实话说,这不像是一个瀑布,倒像是天上下石头,但是咱们写代码的,不要在意这些细节,重点是思路,逻辑,以及具体实现效果的方法。在布局方面,因为是用HTML5/canvas,所以只需要一个canvas画布即可,也就是一行代码:

<canvas id="canvas" width="400" height="500"></canvas>

CSS样式也只需要大概的设置下,代码量不多,这次的效果重点是javascript的代码,因为都是用的原生javascript,没有调用插件,看过我以前写的特效的朋友就知道,我一般都强调的就是基础的原生javascript的重要性,特别是现在各种插件以及框架流行,初学者一旦盲目的去学框架,而忽略原生javascript的话其实是很难找工作的,因为每个公司使用的插件以及框架都未必是一样的,也未必会一直使用。但是如果你原生javascript的基础很扎实,那么不管是什么框架或者插件,你都能在很短时间内掌握,使用,迅速创造价值,这也是很多公司喜欢的人才!万丈高楼平地起!不多说,直接上源码!

如果想要更多的企业求职加分项目,案例,学习方法可以来一下我的前端群570946165,每天都会精挑细选一个特效,项目出来详细讲解,分享!包括答疑解惑!


HTML5+javascript打造瀑布特效源码:

代码过长需要文档版源码来我的前端群570946165,已上传到群文件

头条号里有许多web前端学习视频/源码,企业常用特效/案例/项目,敬请关注!

这是哪?