`

canvas实现可跟鼠标移动的动画粒子效果

阅读更多

canvas实现可跟鼠标移动的动画粒子效果

<canvas id='canv'></canvas>
<!-- 推荐开源CDN来选取需引用的外部JS //-->
<script type="text/javascript" src="http://cdn.gbtags.com/jquery/1.11.1/jquery.min.js"></script>

 

@import url(http://fonts.googleapis.com/css?family=Righteous);
body {
  width: 100%;
  margin: 0;
  overflow: hidden;
  cursor: move;
  background: hsla(0, 0%, 10%, 1);
}

 

window.requestAnimFrame = (function() {
  return window.requestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame ||
    window.oRequestAnimationFrame ||
    window.msRequestAnimationFrame ||
    function(callback) {
      window.setTimeout(callback, 1000 / 60);
    };
})();
c = document.getElementById('canv'),
  $ = c.getContext('2d');

var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;

var rnd = function(min, max) {
  return Math.random() * (max - min) + min;
}

var arr = [];
var num = rnd(50, 150)
var s = 1;
var ms = {
  x: 0,
  y: 0
};
var vel = 2;
var rng = rnd(30, 50);
_x = w / 2;
_y = h / 2;
var u = 0;

var set = function() {
  for (var i = 0; i < num; i++) {
    circs();
  }
  run();
}

var run = function() {
  window.requestAnimationFrame(run);
  upd();
}

var circs = function() {
  arr.push({
    x: _x,
    y: _y,
    v: {
      x: (Math.random() * vel) * 4 - vel,
      y: (Math.random() * vel) * 4 - vel
    }
  });
}

var upd = function() {
  clear();

  for (var i in arr) {

    arr[i].x += arr[i].v.x;
    arr[i].y += arr[i].v.y;

    if (arr[i].x > w + rng || arr[i].x - 5 < 0 - rng) {
      arr.splice(i, 1);
      circs();
    }

    if (arr[i].y > h + rng || arr[i].y < 0 - rng) {
      arr.splice(i, 1);
      circs();
    }

    var dx = arr[i].x - w / 2;
    var dy = arr[i].y - h / 2;
    sqr = Math.sqrt(dx * dx + dy * dy);
    sc = Math.max((sqr / 20), 1);

    var dx2 = (_x + (ms.x - _x) / 12);
    var dy2 = (_y + (ms.y - _y) / 12);

    arr[i].x += dx2 - _x;
    arr[i].y += dy2 - _y;

    $.fillStyle = 'hsla(' + i / 105* (u) + ', 95%, 60%, .8)';
    $.beginPath();
    $.arc(arr[i].x, arr[i].y, s * sc, 0, Math.PI * 2, true);
    $.closePath();
    $.fill();

  }

}

var clear = function() {
  $.globalCompositeOperation = 'source-over';
  $.fillStyle = 'hsla(0,0%,10%,1)';
  $.beginPath();
  $.rect(0, 0, w, h);
  $.closePath();
  $.fill();
  var t1 = "GBTAGS".split("").join(String.fromCharCode(0x2004));;
  $.font = 2.5 + "em 'Righteous', cursive";
  $.fillStyle = 'hsla(' + u / 5 * 12 + ', 95%, 60%, .8)';
  $.fillText(t1, ms.x - $.measureText(t1).width / 2, ms.y);
}

window.addEventListener('mousemove', function(e) {
  ms.x = e.pageX - c.offsetLeft;
  ms.y = e.pageY - c.offsetTop;
  u -= .3;

}, false);

window.addEventListener('mousedown', function(e) {
  _x = ms.x;
  _y = ms.y;
  u -= .3;
}, false);

window.addEventListener('touchmove', function(e) {
  ms.x = e.touches[0].pageX - c.offsetLeft;
  ms.y = e.touches[0].pageY - c.offsetTop;
  u -= .3;
  e.preventDefault();
}, false);

window.addEventListener('touchstart', function(e) {
  _x = ms.x;
  _y = ms.y;
  u -= .3;
  e.preventDefault();
}, false);

window.addEventListener('resize', function() {
  c.width = w = window.innerWidth;
  c.height = h = window.innerHeight;
}, false);
clear();
set();

 

 

.

分享到:
评论

相关推荐

    HTML5 Canvas鼠标移动圆点粒子跟随动画特效

    在这个“HTML5 Canvas鼠标移动圆点粒子跟随动画特效”中,我们看到一个创新且引人入胜的互动设计,用户可以通过鼠标移动来控制页面上的圆点粒子运动,实现了视觉与交互的完美融合。 首先,我们需要理解Canvas的基本...

    基于canvas的超酷跟随鼠标粒子动画

    通过JavaScript的事件处理和Canvas的绘图能力,实现了粒子跟随鼠标移动的动画,为网页添加了动态和趣味性。这个项目展示了Web开发中的创新和动态图形的潜力,对于学习和掌握前端技术,尤其是Canvas和JavaScript的...

    html5 canvas制作鼠标移动粒子光标动画特效源码.zip

    本资源“html5 canvas制作鼠标移动粒子光标动画特效源码.zip”提供了一种利用Canvas实现的粒子光标动画效果,这种效果通常用于提升网站的视觉吸引力和用户体验。 首先,Canvas是HTML5的一个核心元素,通过...

    html5 canvas粒子背景跟随鼠标移动效果代码

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的视觉体验。在这个场景中,我们关注的是如何...通过分析和学习这个代码,你可以进一步掌握Canvas和粒子效果的实现技巧。

    Canvas鼠标移动粒子动画特效.zip

    在这个"Canvas鼠标移动粒子动画特效"中,我们主要会关注以下几个关键知识点: 1. **Canvas基础**: - Canvas是一个HTML元素,通过JavaScript来绘制图形。它通过`&lt;canvas&gt;`标签在HTML文档中定义。 - `canvas....

    HTML5 Canvas鼠标移动网格粒子发光动画

    近期我们分享了很多关于HTML5 Canvas的炫酷动画,大部分都是粒子相关动画,比如这款HTML5 Canvas鼠标滑过粒子挤压动画和HTML5 Canvas 3D绿色粒子动画都非常不错。这次要介绍的同样是一款基于Canvas的HTML5粒子动画,...

    基于html5 canvas实现的跟随鼠标圆点粒子发散动画特效.zip

    【标题】中的“基于html5 canvas实现的跟随鼠标圆点粒子发散动画特效”是一个前端开发项目,它利用HTML5的Canvas元素来创建一个交互式的视觉效果。Canvas是HTML5中用于绘制图形的一个强大功能,它允许开发者通过...

    html5 canvas鼠标圆点粒子交互式动画特效

    这款“html5 canvas鼠标圆点粒子交互式动画特效”利用了Canvas API来创建一个炫酷的视觉体验,用户可以通过鼠标点击和移动与动画进行互动。 1. **HTML5 Canvas基础** HTML5 Canvas是一个基于矢量图形的画布元素,...

    Canvas鼠标移动粒子效果动画.zip

    "Canvas鼠标移动粒子效果动画"是一个利用Canvas API实现的交互式网页特效,用户可以通过鼠标移动来控制粒子的动态行为,营造出视觉上的趣味性。在这个项目中,我们将探讨以下几个关键的技术点: 1. **Canvas基本...

    Canvas鼠标移动粒子动画特效.rar

    综上,"Canvas鼠标移动粒子动画特效.rar"是一个结合了HTML5 Canvas、JavaScript和可能的CSS技术的项目,通过粒子动画实现了与用户交互的视觉效果,具有较高的可定制性和二次开发潜力。学习和理解这个特效可以帮助...

    HTML5 canvas实现圆圈光标粒子响应鼠标移动动画特效源码.zip

    这个“HTML5 canvas实现圆圈光标粒子响应鼠标移动动画特效源码”是一个利用canvas实现的独特视觉效果,它可以将用户的鼠标光标转化为一个动态的、由粒子组成的圆圈,随着鼠标移动而变化,为网页增添互动性和视觉吸引...

    vue canvas 粒子拼图特效

    4. 实现一个更新粒子状态的函数,该函数在每次动画帧时调用,使用`requestAnimationFrame`来平滑动画效果。 5. 在Canvas上绘制粒子,根据粒子的状态更新其位置和样式。 6. 可能需要考虑交互性,比如用户可以通过鼠标...

    html5 canvas鼠标点击拖动粒子动画特效

    在这个特定的“html5 canvas鼠标点击拖动粒子动画特效”项目中,我们将探讨如何利用Canvas API来实现这样的效果。 首先,Canvas API提供了一系列方法,如`fillRect()`、`strokeRect()`、`beginPath()`、`moveTo()`...

    HTML5 canvas实现可响应鼠标点击的粒子云特效源码.zip

    在实际代码中,可能会有一个主循环,如`gameLoop`,在这个循环中处理粒子的移动、碰撞检测(如果有的话)、碰撞后的效果,以及对鼠标点击的响应。粒子的运动可以是随机的,也可以根据物理规则,比如重力或斥力。 ...

    canvas网页背景粒子动效跟随光标

    这种效果通过JavaScript和HTML5的canvas元素实现,使得粒子随着用户鼠标移动而动态变化,创造出独特的交互式背景。 首先,`canvas`是HTML5的一个重要组成部分,它提供了一个二维绘图环境,允许开发者直接在网页上...

    HTML5 Canvas实现很酷的鼠标精灵粒子交互动画特效源码.zip

    在这个“HTML5 Canvas实现很酷的鼠标精灵粒子交互动画特效源码”中,我们可以深入理解Canvas的一些核心特性以及如何利用它们来创建交互式的粒子动画。 首先,Canvas是一个基于矢量图形的API,通过JavaScript进行...

    HTML5鼠标移动光束粒子动画特效.zip

    本资源“HTML5鼠标移动光束粒子动画特效.zip”提供了一种利用HTML5 Canvas元素来实现的独特视觉效果。Canvas是HTML5中的一个核心特性,允许开发者在网页上进行2D绘图,提供了丰富的图形绘制能力。 在这个特效中,...

    html5 Canvas实现可响应鼠标移动带爆破效果的雨滴下落动画源码.zip

    在这个特定的项目中,"html5 Canvas实现可响应鼠标移动带爆破效果的雨滴下落动画源码.zip" 提供了一个使用HTML5 Canvas技术构建的互动动画,当鼠标在画布上移动时,雨滴会显示出爆破效果。这个动画效果通常用于提升...

Global site tag (gtag.js) - Google Analytics