Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { margin: 0; height: 100vh; overflow: hidden; display: flex; justify-content: center; align-items: center; } canvas { box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.15); background: #fff; }
JavaScript
/*-------------------- Utility --------------------*/ const lerp = (a, b, n) => (1 - n) * a + n * b /*-------------------- Setup --------------------*/ const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') let time = 0 const devicePixelRatio = window.devicePixelRatio || 1 const w = 400 const h = 400 const simplex = new SimplexNoise() const steps = 100 const amplitude = 30 const lines = 30 /*-------------------- DrawLine --------------------*/ const drawLine = (startY, t, seed) => { const step = w / steps let x = -step let y = 0 const arr = [] for (let i = 0; i <= steps; i++) { const n = simplex.noise2D((time * 0.001 + seed + i) * 0.02, (startY + time * t) * 0.0003) x += step let amp = Math.min(i, 40) if (i > steps - 40) amp = steps - i y = startY + n * amp arr.push({x, y}) } return arr } /*-------------------- Clear --------------------*/ const clear = () => { ctx.clearRect(0, 0, w, h) } /*-------------------- Draw --------------------*/ const draw = () => { const p1 = drawLine(200, 1.1, 100) const p2 = drawLine(200, 1.3, 200) const p3 = drawLine(200, 1, 300) const p4 = drawLine(200, 1.2, 150) for (let r = 0; r <= lines; r++) { const h = Math.floor(130 + r + time * 0.01) ctx.strokeStyle = `hsla(${h}, 50%, 50%, .5)` document.body.style.backgroundColor = `hsl(${h}, 40%, 90%)` const s = 1 / lines ctx.beginPath() for (let i = 0; i <= steps; i++) { const type = i === 0 ? 'moveTo' : 'lineTo' const x = lerp(p1[i].x, p2[i].x, r * s) const y = lerp(p1[i].y, p2[i].y, r * s) ctx[type](x, y) } ctx.stroke() } for (let r = 1; r <= lines; r++) { const h = Math.floor(130 + lines + r + time * 0.01) ctx.strokeStyle = `hsla(${h}, 50%, 50%, .5)` document.body.style.backgroundColor = `hsl(${h}, 40%, 90%)` const s = 1 / lines ctx.beginPath() for (let i = 0; i <= steps; i++) { const type = i === 0 ? 'moveTo' : 'lineTo' const x = lerp(p2[i].x, p3[i].x, r * s) const y = lerp(p2[i].y, p3[i].y, r * s) ctx[type](x, y) } ctx.stroke() } } /*-------------------- Animate --------------------*/ const animate = () => { time = window.performance.now() clear() requestAnimationFrame(animate) draw() } animate() /*-------------------- Resize --------------------*/ const onResize = () => { canvas.width = w * devicePixelRatio canvas.height = h * devicePixelRatio canvas.style.width = `${w}px` canvas.style.height = `${h}px` ctx.scale(devicePixelRatio, devicePixelRatio) ctx.strokeWidth = 1 animate() } onResize() /*-------------------- Listeners --------------------*/ window.addEventListener('resize', onResize)
粒子
时间
文字
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号