Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
html, body { margin: 0; padding: 0; overflow: hidden; } .container { width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; } .canvas { position: absolute; } .canvas--shape { z-index: 1; opacity: 0; }
JavaScript
const map = (value, start1, stop1, start2, stop2) => ((value - start1) / (stop1 - start1)) * (stop2 - start2) + start2; const q = sel => document.querySelector(sel); const canvas = q('.js-canvas'); const ctx = canvas.getContext('2d'); const canvas2 = q('.js-canvas-2'); const ctx2 = canvas2.getContext('2d'); const w = 500; const h = 500; const wh = w * 0.5; const hh = h * 0.5; canvas.width = canvas2.width = w; canvas.height = canvas2.height = h; const MAX_LINES = 100; const MAX_SHAPES = 20; let steps = MAX_LINES; let shapes = MAX_SHAPES; let percentX = 1; let percentY = 1; let phase = 0; let autoSpeed = 0; let autoAnimate = true; const drawLine = (color, from, to) => { ctx.beginPath(); ctx.lineWidth = 0.25; ctx.strokeStyle = color; ctx.moveTo(from.x, from.y); ctx.lineTo(to.x, to.y); ctx.stroke(); ctx.closePath(); }; const drawShape = (hue = '0', rotation = 0, percent = 1) => { const padding = 10; const lineWidth = wh - padding; const spacing = lineWidth / steps; const scale = 0.1 + (0.9 * (1 - percent)); const alpha = 0.1 + (0.5 * (1 - percent)); ctx.beginPath(); ctx.strokeStyle = `hsla(${hue}, 100%, 20%, 0.2)`; ctx.fillStyle = `hsla(${hue}, 100%, 20%, 0.01)`; ctx.moveTo(0, padding); ctx.lineTo(wh * 0.3, hh * 0.7); ctx.lineTo(wh - padding, hh); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.fillStyle = `hsla(${hue}, 100%, 40%, 0.25)`; ctx.arc(lineWidth, wh, 2, 0, Math.PI * 2, false); ctx.fill(); ctx.closePath(); for (let i = 0; i < steps; i++) { const lineColor = `hsla(${hue}, 100%, 25%, ${alpha})`; const from = { x: spacing * i, y: hh }; const to = { x: 0, y: padding + (spacing * i) }; drawLine(lineColor, from, to); } ctx2.save(); ctx2.translate(wh, hh); ctx2.rotate(rotation); ctx2.scale(scale, scale); const a = (Math.PI * 2) / 4; for (let i = 0; i < 4; i++) { ctx2.rotate(a); ctx2.drawImage(canvas, 0, 0, w, h, 0, -hh, w, h); } ctx2.restore(); }; const clear = (context) => { context.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); }; const draw = () => { for (let i = 0; i < shapes; i++) { const rotation = phase + ((Math.PI * 2) / shapes) * i * percentX; const percent = i / (shapes - 1); const hue = 210 + (130 * percent); drawShape(hue, rotation, percent); } }; const loop = () => { clear(ctx); clear(ctx2); draw(); if (autoAnimate) { const x = Math.cos(autoSpeed); const y = Math.sin(Math.PI + autoSpeed); percentX = map(x, -1, 1, 0, 1); percentY = map(y, -1, 1, 0, 1); } steps = 2 + Math.ceil((MAX_LINES - 2) * percentY); phase += 0.002; autoSpeed += 0.005; requestAnimationFrame(loop); }; loop(); const onPointerMove = (e) => { if (autoAnimate) { return; } const event = (e.touches && e.touches.length) ? e.touches[0] : e; const { clientX, clientY } = event; const x = clientX; const y = clientY; percentX = x / document.body.offsetWidth; percentY = y / document.body.offsetHeight; }; const onPointerOver = () => { autoAnimate = false; }; const onPointerLeave = () => { autoAnimate = true; }; document.body.addEventListener('mousemove', onPointerMove); document.body.addEventListener('touchmove', onPointerMove); document.addEventListener('mouseenter', onPointerOver); document.addEventListener('touchstart', onPointerOver); document.addEventListener('mouseleave', onPointerLeave); document.addEventListener('touchend', onPointerLeave);
粒子
时间
文字
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号