Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body, html { padding: 0; margin: 0;background-color: #0091ff; }
JavaScript
const canvas = document.querySelector("canvas"); const ctx = canvas.getContext('2d'); // for intro motion let mouseMoved = false; let mouse = { x: .5 * window.innerWidth, y: .5 * window.innerHeight, tX: 0, tY: 0 } let params = { pointsNumber: 40, widthFactor: .3, mouseThreshold: .6, spring: .4, friction: .5 }; const touchTrail = new Array(params.pointsNumber); for (let i = 0; i < params.pointsNumber; i++) { touchTrail[i] = { x: mouse.x, y: mouse.y, vx: 0, vy: 0, } } window.addEventListener("click", e => { updateMousePosition(e.pageX, e.pageY); }); window.addEventListener("mousemove", e => { mouseMoved = true; updateMousePosition(e.pageX, e.pageY); }); window.addEventListener("touchmove", e => { mouseMoved = true; updateMousePosition(e.targetTouches[0].pageX, e.targetTouches[0].pageY); }); function updateMousePosition(eX, eY) { mouse.tX = eX; mouse.tY = eY; } setupCanvas(); updateBubbles(0); window.addEventListener('resize', () => { setupCanvas(); }); function updateBubbles(t) { // for intro motion if (!mouseMoved) { mouse.tX = (.5 + .3 * Math.cos(.002 * t) * (Math.sin(.005 * t))) * window.innerWidth; mouse.tY = (.5 + .2 * (Math.cos(.005 * t)) + .1 * Math.cos(.01 * t)) * window.innerHeight; } ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.beginPath(); touchTrail.forEach((p, pIdx) => { if (pIdx === 0) { p.x = mouse.x; p.y = mouse.y; ctx.moveTo(p.x, p.y); } else { p.vx += (touchTrail[pIdx - 1].x - p.x) * params.spring; p.vy += (touchTrail[pIdx - 1].y - p.y) * params.spring; p.vx *= params.friction; p.vy *= params.friction; p.x += p.vx; p.y += p.vy; } }); for (let i = 1; i < touchTrail.length - 1; i++) { const xc = .5 * (touchTrail[i].x + touchTrail[i + 1].x); const yc = .5 * (touchTrail[i].y + touchTrail[i + 1].y); ctx.quadraticCurveTo(touchTrail[i].x, touchTrail[i].y, xc, yc); ctx.lineWidth = params.widthFactor * (params.pointsNumber - i); ctx.stroke(); } ctx.lineTo(touchTrail[touchTrail.length - 1].x, touchTrail[touchTrail.length - 1].y); ctx.stroke(); mouse.x += (mouse.tX - mouse.x) * params.mouseThreshold; mouse.y += (mouse.tY - mouse.y) * params.mouseThreshold; window.requestAnimationFrame(updateBubbles); } function setupCanvas() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; }
粒子
时间
文字
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号