Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { background: #dac82c; overflow: hidden; } canvas { display: block; }
JavaScript
var canvas, ctx, width, height, mx, my, mouseIdle, mouseIdleTick, mouseIdleMax, eyes, PI, TAU; function Eye(opt) { this.x = opt.x; this.y = opt.y; this.radius = opt.radius; this.pupilX = this.x; this.pupilY = this.y; this.pupilRadius = this.radius / 2; this.angle = 0; this.magnitude = 0; this.magnitudeMax = this.radius - this.pupilRadius; } Eye.prototype.step = function() { var dx = mx - this.x, dy = my - this.y, dist = Math.sqrt(dx * dx + dy * dy); this.angle = Math.atan2(dy, dx); if (mouseIdle) { this.magnitude = 0; } else { this.magnitude = Math.min(Math.abs(dist), this.magnitudeMax); } this.pupilX += ((this.x + Math.cos(this.angle) * this.magnitude) - this.pupilX) * 0.1; this.pupilY += ((this.y + Math.sin(this.angle) * this.magnitude) - this.pupilY) * 0.1; }; Eye.prototype.draw = function() { ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, TAU); ctx.fillStyle = '#fbf9e6'; ctx.fill(); ctx.lineWidth = 5; ctx.strokeStyle = '#424031'; ctx.stroke(); ctx.beginPath(); ctx.arc(this.pupilX, this.pupilY, this.pupilRadius, 0, TAU); ctx.fillStyle = '#424031'; ctx.fill(); }; function init() { canvas = document.querySelector('canvas'); ctx = canvas.getContext('2d'); mouseIdleMax = 100; PI = Math.PI; TAU = PI * 2; eyes = []; reset(); loop(); } function reset() { width = innerWidth; height = innerHeight; canvas.width = width; canvas.height = height; mx = width / 2; my = height / 2; mouseIdle = true; eyes.length = 0; eyes.push(new Eye({ x: width * 0.2, y: height * 0.4, radius: 70 })); eyes.push(new Eye({ x: width * 0.8, y: height * 0.4, radius: 70 })); } function mousemove(e) { mx = e.pageX; my = e.pageY; mouseIdleTick = mouseIdleMax; } function step() { var i = eyes.length; while (i--) { eyes[i].step(); } if (mouseIdleTick > 0) { mouseIdleTick--; mouseIdle = false; } else { mouseIdle = true; } } function draw() { ctx.clearRect(0, 0, width, height); var i = eyes.length; while (i--) { eyes[i].draw(); } ctx.beginPath(); ctx.arc(width / 2, height * 0.65, 100, 0, PI); ctx.fillStyle = '#424031'; ctx.fill(); } function loop() { requestAnimationFrame(loop); step(); draw(); } addEventListener('mousemove', mousemove); addEventListener('resize', reset); init();
粒子
时间
文字
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号