css3+HTML5 Canvas酷炫3D線條延伸動畫特效
js程式碼
<腳本> ;(功能() { '使用嚴格'; 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; 函數 prj(obj) { var cz = obj.z + fl; 如果(cz === 0)返回; var scl = fl / cz; obj.p.x = cx + obj.x * scl; obj.p.y = cy + obj.y * scl; obj.s = scl; } var P = 函數(x, y, z) { 這個.x = x; 這個.y = y; 這個.z = z; 這個.s = 1; 這個.cl = 0; 這個.p = { x:0, y:0 }; }; P.原型 = { 構造函數:P, 更新:函數(){ 這個.z -= 30; }, 渲染:函數(ctx){ if(this.z <= -fl) 返回; ctx.save(); ctx.translate(this.p.x, this.p.y); ctx.scale(這個.s,這個.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 = 函數(x, y, z) { this.list = []; 這個.max = 100; 這個.x = x; 這個.y = y; 這個.z = z; 這個.s = 1; 這個.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.原型 = { 建構函數:M, 更新:函數(){ 這個.cl += 這個.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; 這個.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); } } 別的 { 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); } }, 渲染:函數(ctx){ if(this.z <= -fl) 返回; ctx.save(); ctx.translate(this.p.x, this.p.y); ctx.fillStyle = '綠色'; ctx.beginPath(); ctx.arc(0, 0, 2, 0, Math.PI * 2); ctx.fill(); ctx.restore(); } }; 函數更新(mv,列表){ for(var i = 0; i < list.length; i++) { var p = 列表[i]; p.update(); prj(p); p.渲染(ctx); } for(var i = list.length-1; i >= 0; i--) { var p = 列表[i]; if(p.z <= -fl) 繼續; if(i === 列表.length - 1) { ctx.lineWidth = Math.random(); ctx.StrongStyle = 'hsl(' + mv.cl + ', 100%, 50%)'; ctx.beginPath(); ctx.moveTo(p.p.x, p.p.y); } 別的 { ctx.lineTo(p.p.x, p.p.y); } } ctx. 中風(); } var ms = []; for(var i = 0; i < 10; i++) { ms.push(新M( Math.random() * 400 - 200, Math.random() * 400 - 200, Math.random() * 400 - 200)); } requestAnimationFrame(函數迴圈() { 請求動畫幀(循環); ctx.clearRect(0, 0, w, h); for(var i = 0; i < ms.length; i++) { var m = ms[i]; m.update(); prj(米); 更新(m,m.列表); } }); })(); </劇本>
這是一款基於HTML5 Canvas的酷炫3D線條延伸動畫效果,色彩變幻,非常漂亮!
免責聲明
本站所有資源皆由網友貢獻或各大下載網站轉載。請自行檢查軟體的完整性!本站所有資源僅供學習參考。請不要將它們用於商業目的。否則,一切後果都由您負責!如有侵權,請聯絡我們刪除。聯絡方式:admin@php.cn
相關文章
如何熟練運用CSS3特效提升網頁的使用者體驗
09 Sep 2023
如何熟練運用CSS3特效提升網頁的使用者體驗隨著網路的發展,網頁設計與使用者體驗成為了網站開發的重要環節。而CSS3特效的應用,可為網頁增添動感與視覺效果,提升使用者體驗。本文將介紹幾種常見的CSS3特效及其程式碼範例,幫助開發者更熟練地運用CSS3特效,提升網頁的使用者體驗。過渡效果(Transition)過渡效果是CSS3中最基本的特效之一,透過改變某個屬
jQuery與CSS3超炫漢堡變形動畫特效
18 Jan 2017
這是一款使用jQuery和CSS3來製作的酷炫漢堡包變形動畫特效。此特效透過jQuery來附加按鈕事件,並透過CSS3 transform和animation來製作動畫特效。
純CSS3創意導航選單特效
17 Jan 2017
这是一款非常有创意的纯CSS3导航菜单特效。该导航菜单主要通过CSS3 transform和transition方法实现效果,非常简单。该特效由進擊的燊提供。
基於SVG與CSS3的可愛卡通小動物動畫特效
19 Jan 2017
這是一款以SVG濾鏡和CSS3製作的可愛小動物動畫特效。此特效中使用HTML標籤和SVG結合製作動物的外形,並透過CSS3 animation動畫來製作動物的各種動畫特效。
Hot Tools
CSS文字組合成心型動畫特效
CSS文字組合成心型動畫特效
CSS3 SVG表白花動畫特效
SS3 SVG表白花動畫特效是一款情人節動畫特效。
CSS的商城網站常用左側分類下拉導覽選單代碼
CSS的商城網站常用左側分類下拉導覽選單代碼
jQuery+CSS3情人節愛心特效
jQuery+CSS3情人節愛心特效是情人節懸掛擺動愛心動畫特效。
css3湯匙撈起湯圓動畫特效
一碗可愛的湯圓表情,湯匙撈起一個湯圓動畫特效
熱門文章
Marvel Rivals 的 Unreal 進程崩潰了:快速修復它!
14 Dec 2024
故障排查
《潛行者 2:切爾諾貝利之心》- 所有藏匿地點都在垃圾中
28 Nov 2024
手游攻略
使用Java的'Scanner”時如何避免'NoSuchElementException”?
04 Dec 2024
java教程
如何修復 Windows 中的 WilcomEmul.dll 錯誤:59 錯誤?
12 Dec 2024
故障排查
盧馬島:所有職業的解釋
28 Nov 2024
手游攻略