Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
* { margin: 0; padding: 0; } html, body { height: 100%; position: relative; width: 100%; } body { background: #eee; } canvas { background: white; display: block; } #c { left: 50%; position: absolute; top: 50%; transform: translate(-50%, -50%); }
JavaScript
;(function(main) { var args = {}; main(args); })(function(args) { 'use strict'; var c = document.getElementById('c'); var ctx = c.getContext('2d'); c.width = window.innerWidth; c.height = window.innerHeight; var mouse = { isMoveForFirst: false, x: 0, y: 0, ox: 0, oy: 0, tx: c.width / 2, ty: c.height / 2 }; var Box = function(x, y, w, h) { this.x = x; this.y = y; this.w = w; this.h = h; this.a = Math.random() * Math.PI * 2; this.s = 1; this.v = 0; this.o = 1; }; Box.prototype = { constructor: Box, update: function() { this.o -= 0.01; this.v += 0.1; this.a += Math.random() * 0.8 - 0.4; this.x += Math.cos(this.a) * this.v; this.y += Math.sin(this.a) * this.v; this.v = Math.min(10, this.v); this.o = Math.max(0, this.o); }, reset: function() { this.a = Math.random() * Math.PI * 2; this.v = 0; this.o = 1; }, render: function(ctx) { ctx.save(); ctx.globalAlpha = this.o; ctx.fillStyle = 'white'; ctx.translate(this.x, this.y); ctx.rotate(this.a); ctx.scale(this.s, this.s); ctx.fillRect(-this.w / 2, -this.h / 2, this.w, this.h); ctx.restore(); } }; var box = null; var boxList = []; var maxBox = 200; var index = -1; c.addEventListener('mousemove', function(e) { var rect = c.getBoundingClientRect(); mouse.isMoveForFirst = true; mouse.x = e.clientX - rect.left; mouse.y = e.clientY - rect.top; }); requestAnimationFrame(function loop() { requestAnimationFrame(loop); ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; ctx.fillRect(0, 0, c.width, c.height); if(!mouse.isMoveForFirst) { var dx = mouse.tx - mouse.x; var dy = mouse.ty - mouse.y; var d = Math.sqrt(dx * dx + dy * dy); mouse.x += dx * 0.1; mouse.y += dy * 0.1; if(d < 0.98) { mouse.x = mouse.tx; mouse.y = mouse.ty; } } if(mouse.x !== mouse.ox && mouse.y !== mouse.oy) { if(boxList.length < maxBox) { box = new Box(mouse.x, mouse.y, 10, 3); boxList.push(box); } else { index = (index + 1) % boxList.length; box = boxList[index]; box.reset(); box.x = mouse.x; box.y = mouse.y; } } for(var i = 0; i < boxList.length; i++) { box = boxList[i]; box.update(); box.render(ctx); } mouse.ox = mouse.x; mouse.oy = mouse.y; }); });
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>鼠标跟随-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号