
更多>
最新下载
24小时阅读排行榜
- 1 win10系统打印机无法打印 win10打印机故障排查指南
- 2 js怎么实现元素的淡入淡出效果
- 3 学python能干嘛 学习后就业方向
- 4 2025年1月-5月Steam最畅销十大新作
- 5 学习通课程密码忘记了怎么办 学习通课程密码找回操作指南
- 6 Python中如何提取视频帧?
- 7 抖音如何查看谁看过我 抖音访客记录查看方法分享
- 8 python中del是什么意思 python中del删除对象的用法解析
- 9 美图秀秀怎么给照片加雪花特效?美图秀秀冬季氛围!
- 10 PHP中的代码规范:如何在PHP中遵循PSR标准编写代码
- 11 众议员迈克·柯林斯(Mike Collins
- 12 Python里sys.argv的含义 sys模块中命令行参数argv的用法说明
- 13 Python中time.sleep功能 时间模块sleep函数在延迟执行中的应用
- 14 小米手机怎么使用google地图
- 15 为什么《生化危机9》没有萝丝?舅舅:她当时只有5岁
更多>
最新教程
-
- 麻省理工大佬Python课程
- 9394 2024-05-31
-
- Swoole5 Hyperf3 php8新版本协程框架讲说
- 11971 2024-05-13
-
- 【web前端】Node.js快速入门
- 7853 2024-04-26
-
- 国外Web开发全栈课程全集
- 7777 2024-04-24
-
- Go语言实战之 GraphQL
- 5587 2024-04-19
-
- 550W粉丝大佬手把手从零学JavaScript
- 6402 2024-04-18
css3+HTML5 Canvas炫酷3D线条延伸动画特效
js代码
<script> ;(function() { 'use strict'; var c = document.getElementById('c'); var ctx = c.getContext('2d'); var w = c.width = window.innerWidth; var h = c.height = window.innerHeight; var cx = w / 2; var cy = h / 2; var fl = 1000; function prj(obj) { var cz = obj.z + fl; if(cz === 0) return; var scl = fl / cz; obj.p.x = cx + obj.x * scl; obj.p.y = cy + obj.y * scl; obj.s = scl; } var P = function(x, y, z) { this.x = x; this.y = y; this.z = z; this.s = 1; this.cl = 0; this.p = { x: 0, y: 0 }; }; P.prototype = { constructor: P, update: function() { this.z -= 30; }, render: function(ctx) { if(this.z <= -fl) return; ctx.save(); ctx.translate(this.p.x, this.p.y); ctx.scale(this.s, this.s); ctx.fillStyle = 'hsla(' + this.cl + ', 100%, 50%, 0.5)'; ctx.beginPath(); ctx.arc(0, 0, 2, 0, Math.PI * 2); ctx.fill(); ctx.restore(); } }; var M = function(x, y, z) { this.list = []; this.max = 100; this.x = x; this.y = y; this.z = z; this.s = 1; this.p = { x: 0, y: 0 }; this.ax = Math.random() * (Math.PI * 2); this.ay = Math.random() * (Math.PI * 2); this.rx = Math.random() * 100; this.ry = Math.random() * 100; this.cl = Math.random() * 360; this.cls = Math.random(); }; M.prototype = { constructor: M, update: function() { this.cl += this.cls; this.ax += Math.random() * 0.1 - 0.02; this.ay += Math.random() * 0.1 - 0.02; this.x = Math.cos(this.ax) * 100; this.y = Math.sin(this.ay) * 100; this.z += 10; if(this.z > fl) this.z = fl; if(this.list.length < this.max) { if(Math.random() * 100 < 50) { var pp = new P(this.x, this.y, this.z); pp.cl = this.cl; this.list.push(pp); } } else { var pp = this.list.shift(); pp.x = this.x; pp.y = this.y; pp.z = this.z; pp.cl = this.cl; this.list.push(pp); } }, render: function(ctx) { if(this.z <= -fl) return; ctx.save(); ctx.translate(this.p.x, this.p.y); ctx.fillStyle = 'green'; ctx.beginPath(); ctx.arc(0, 0, 2, 0, Math.PI * 2); ctx.fill(); ctx.restore(); } }; function update(mv, list) { for(var i = 0; i < list.length; i++) { var p = list[i]; p.update(); prj(p); p.render(ctx); } for(var i = list.length-1; i >= 0; i--) { var p = list[i]; if(p.z <= -fl) continue; if(i === list.length - 1) { ctx.lineWidth = Math.random(); ctx.strokeStyle = 'hsl(' + mv.cl + ', 100%, 50%)'; ctx.beginPath(); ctx.moveTo(p.p.x, p.p.y); } else { ctx.lineTo(p.p.x, p.p.y); } } ctx.stroke(); } var ms = []; for(var i = 0; i < 10; i++) { ms.push(new M( Math.random() * 400 - 200, Math.random() * 400 - 200, Math.random() * 400 - 200)); } requestAnimationFrame(function loop() { requestAnimationFrame(loop); ctx.clearRect(0, 0, w, h); for(var i = 0; i < ms.length; i++) { var m = ms[i]; m.update(); prj(m); update(m, m.list); } }); })(); </script>
这是一款基于HTML5 Canvas绘制的炫酷3D线条延伸动画特效,多彩颜色变幻,非常漂亮!


本站所有资源都是由网友投搞发布,或转载各大下载站,请自行检测软件的完整性!本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!如有侵权请联系我们删除下架,联系方式:admin@php.cn