canvas教程

Canvas粒子背景效果 前端开发,JQUERY特效,全栈开发,vue开发

字号+ 作者:H5之家 来源:H5之家 2018-01-28 14:00 我要评论( )

最近有人问我博客的背景效果怎么实现的,其实就是一个canvas效果,今天抽空写篇博客简单分享下思路Demo演示主要分为两步首先就是根据窗口缩放比例随机生成点再者

  • 最近有人问我博客的背景效果怎么实现的,其实就是一个canvas效果,今天抽空写篇博客简单分享下思路
  • Demo演示
  • 主要分为两步 实现过程

    1.第一步封装个函数mainBgFullScreen初始化canvas

  • 使canvas根据窗口自适应 width = $(':root').width(); height = $(':root').height(); zoom = getZoom(); $canvas.attr('width', width); $canvas.attr('height', height);
  • 由于要做到自适应需要监听resize事件,在回调中执行mainBgFullScreen
  • 绘制Canvas,固定套路 if ($canvas[0].getContext) { var ctx = $canvas[0].getContext('2d'); ctx.fillStyle = '#ffffff'; ctx.strokeStyle = 'rgba(255,255,255,0)'; ctx.lineWidth = 1 * zoom; drawCanvas(ctx); }
  • 2.第二步在drawCanvas函数中根据一定的逻辑画点画线
      1.画点:

  • 封装一个工厂生成不同大小,不同位置,运动速度不同的点,这些根据屏幕缩放比生成,保证各个屏幕大小下显示协调 function creatPoint() { var xsKew = (Math.random() - 0.5) * zoom;//x方向速度 var ysKew = (Math.random() - 0.5) * zoom;//y方向速度 var r = ~~(Math.random() * 5 * zoom); var x = ~~(Math.random() * (width - r)) + 2 * r; var y = ~~(Math.random() * (height - r)) + 2 * r; var point = { x: x, y: y, xsKew: xsKew, ysKew: ysKew, r: r } return point; }
  • 在初始化Canvas时循环生成一些点,塞到数组中,画点时循环数组画点 //初始化先放200个点 for (var i = 0; i < ~~(200 * zoom); i++) { pointArry.push(creatPoint()); } //drawCanvas函数中 $.each(pointArry, function (index) { //绘制点 ctx.arc(this.x, this.y, this.r, 0, 2 * Math.PI); ctx.fill(); })
  • 由于监听resize事件所以每次初始化,先清空数组
  •   1.画线

  • 封装一个函数drawLine,参数是两点坐标以及ctx,根据勾股定理,大家应该都懂的,画两点之间的连线 //画线 function drawLine(ctx, p1x, p1y, p2x, p2y) { var xDistance = Math.abs(p1x - p2x);//计算两点间的x距离 var yDistance = Math.abs(p1y - p2y);//计算两点间的y距离 var distance = Math.sqrt(xDistance * xDistance + yDistance * yDistance); if (distance 0 && mouseY > 0) { drawLine(ctx, mouseX, mouseY, this.x, this.y); } 至此大功告成
  • 大家可以直接看效果
  • 小伙伴们如果有更好的方案,请分享一下,互相学习
  • 如需转载,请注明出处:粒子背景效果.html

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 《HTML5 Canvas基础教程(英)霍克著》

      《HTML5 Canvas基础教程(英)霍克著》

      2018-01-28 14:07

    • JS+Canvas绘制时钟效果

      JS+Canvas绘制时钟效果

      2018-01-28 12:27

    • HTML5 Canvas结合RGraph插件制作柱状图

      HTML5 Canvas结合RGraph插件制作柱状图

      2018-01-28 10:05

    • html5 canvas 线太粗的解决方法

      html5 canvas 线太粗的解决方法

      2018-01-28 10:05

    网友点评