Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
html, body { position: absolute; overflow: hidden; margin: 0; padding: 0; width: 100%; height: 100%; background:#000; touch-action: none; content-zooming: none; } canvas { position: absolute; width: 100%; height: 100%; cursor: crosshair; background:#000; }
JavaScript
{ // IK point class class Point { constructor() { this.x = Math.random() * canvas.width; this.y = Math.random() * canvas.height; this.a = 0.0; } link(p, s, rx, ry) { const x = p.x + rx; const y = p.y + ry; this.a = Math.atan2(y - this.y, x - this.x) + Math.PI; this.x = x + s * Math.cos(p.a); this.y = y + s * Math.sin(p.a); return this; } } // set canvas const canvas = { init() { this.elem = document.querySelector("canvas"); this.resize(); window.addEventListener("resize", () => canvas.resize(), false); return this.elem.getContext("2d"); }, resize() { this.width = this.elem.width = this.elem.offsetWidth; this.height = this.elem.height = this.elem.offsetHeight; } }; // set pointer const pointer = { init(canvas) { this.x = canvas.width * 0.5; this.y = canvas.height * 0.5; this.a = 0; this.isDown = false; ['mousemove','touchmove'].forEach((event, touch) => { document.addEventListener(event, (e) => { if (touch) { e.preventDefault(); this.x = e.targetTouches[0].clientX; this.y = e.targetTouches[0].clientY; } else { this.x = e.clientX; this.y = e.clientY; } }, false); }); window.addEventListener("mousedown", e => this.isDown = true, false); window.addEventListener("mouseup", e => this.isDown = false, false); } }; // init pen const ctx = canvas.init(); pointer.init(canvas); pointer.p = new Point(); const points = []; for (let i = 0; i < 1000; ++i) { points.push(new Point()); } // infinite loop const run = () => { requestAnimationFrame(run); if (pointer.isDown) { ctx.globalCompositeOperation = "source-over"; ctx.fillStyle = "#eeeeee"; ctx.fillRect(0, 0, canvas.width, canvas.height); } else { ctx.globalCompositeOperation = "lighter"; ctx.clearRect(0, 0, canvas.width, canvas.height); } let p0 = pointer.p.link(pointer, 0, Math.random(), Math.random()); let lineWidth = 150; p0 = pointer.p; for (let p1 of points) { p0 = p1.link(p0, 10, 0, 0); ctx.save(); ctx.translate(p1.x, p1.y); ctx.rotate(p1.a); if (pointer.isDown) { ctx.strokeStyle = "#334"; ctx.strokeRect(0, -lineWidth * 0.25, 10, Math.max(2, 0.5 * (lineWidth *= 0.994))); } else { ctx.fillStyle = "hsl(" + Math.round(lineWidth * 5) + ", 80%, 50%)"; ctx.fillRect(0, -lineWidth * 0.5, 10, Math.max(2, lineWidth *= 0.994)); } ctx.restore(); } }; run(); }
粒子
时间
文字
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号