世界浩瀚无边,然而都是由粒子组成;一句老话复杂的东西都是由简单的东西组成。
本文主题是一个大家经常看到的点线图简单动画,即下图,所以直接来代码吧!
首先声明一些 js
变量(这些变量不用提前知晓,进入画图逻辑时自然知道需要声明哪些变量)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 画布上所有点对象数组
let dotsArr = [],
canvas = document.getElementById('canvas'),
ctx = canvas.getContext('2d'),
width = document.documentElement.offsetWidth || document.body.offsetWidth,
height = document.documentElement.offsetHeight || document.documentElement.offsetHeight,
// 画布点的数量
dotsNum = parseInt(width * height / 8000),
// 两个点可以连线的间距临界值
dotsDistance = 100
// 画布点最大数量
maxDotsNum = dotsNum * 1.5
// 多出的点数量
overDotsNum = 0
// 设置画布大小(注意:这里不能用style代替)
canvas.setAttribute('width', width)
canvas.setAttribute('height', height)
html结构1
<canvas id="canvas"></canvas>
一、画点
1 | // 点对象 |
1 | // 随机生成一定数量的点,画到画布上的同时,将其存储在dotsArr数组中,更新画布时用 |
二、画线及动效
1 | var requestAnimationFrame = requestAnimationFrame || webkitRequestAnimationFrame || oRequestAnimationFrame || msRequestAnimationFrame |
到这里基本功能已经完成,下边介绍一下鼠标点击和移动事件的动效。
三、鼠标点击事件
1 | // 事件绑定 |
四、鼠标移动事件
1 | // 事件绑定 |