亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

ES6與canvas實現鼠標小球跟隨效果

2024-07-11 09:08:04
字體:
來源:轉載
供稿:網友

最近閑來無聊,看了下ES6的語法,結合canvas實現了動畫特效——隨著鼠標的移動,會有小球跟隨且自動消失的動畫。

首先,html部分,目前就一個canvas標簽。

 <canvas id="canvas">         當前瀏覽器不支持! </canvas>

其次,css部分,沒有考慮美觀,大家喜歡的話,可以自己添加樣式

<style>        body{            margin: 90px;        }        #canvas{            box-shadow: 0 0 5px;        }    </style>

最后,看下js實現部分

<script>    const canvas = document.getElementById("canvas");    canvas.height = 600;    canvas.width = 1000;    canvas.style.backgroundColor = "#000";    const ctx = canvas.getContext("2d");    //小球類    class Ball{        constructor(x, y, color){            this.x = x;            this.y = y;            this.color = color;            //小球半徑默認40            this.r = 40;        }        //繪制小球        render(){            ctx.save();            ctx.beginPath();            ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2);            ctx.fillStyle = this.color;            ctx.fill();            ctx.restore();        }    }    //移動小球    class MoveBall extends Ball{        constructor(x, y, color){            super(x, y, color);            this.dX = Math.floor(Math.random()*5+1);            this.dY = Math.floor(Math.random()*5+1);            this.dR = Math.floor(Math.random()*5+1);        }        upData(){            this.x += this.dX;            this.y += this.dY;            this.r -= this.dR;            if(this.r < 0){                this.r = 0;            }        }    }    let ballArry = [];    let colorArry = ['red', 'green', 'pink', 'yellow', 'blue'];    canvas.addEventListener("mousemove",function(e){        ballArry.push(new MoveBall(e.offsetX, e.offsetY, colorArry[Math.floor(Math.random()*5)]));    })    setInterval(function(){        ctx.clearRect(0, 0, canvas.width, canvas.height);        for(let i=0;i<ballArry.length;i++){            ballArry[i].render();            ballArry[i].upData();        }    },50);    </script>

稍作解釋下我的設計思路:

首先,獲取canvas對象,獲取上下文,設置一些基本的屬性。(canvas不做過多描述,具體的可以去w3自己研究)。然后,先定義一個Ball的類,里面有小球的圓心坐標位置,以及半徑和顏色。在定義一個畫小球的方法,具體的畫圓實現,不懂的可以去canvas文檔自己去看。

在定義一個會變的小球類并繼承Ball類。里面會有更新小球狀態的方法,用來改變小球的半徑以及顏色屬相。

最后,開啟一個定時器,當鼠標移動時,把生成的小球存儲到數組中,然后遍歷循環讀取小球,并改變小球的樣式,達到最終的效果。

最后附上完整代碼。直接拷貝瀏覽器運行。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>會動的小球</title>    <style>        body{            margin: 90px;        }        #canvas{            box-shadow: 0 0 5px;        }    </style></head><body>    <canvas id="canvas">        當前瀏覽器不支持!    </canvas>    <script>    const canvas = document.getElementById("canvas");    canvas.height = 600;    canvas.width = 1000;    canvas.style.backgroundColor = "#000";    const ctx = canvas.getContext("2d");    //小球類    class Ball{        constructor(x, y, color){            this.x = x;            this.y = y;            this.color = color;            //小球半徑默認40            this.r = 40;        }        //繪制小球        render(){            ctx.save();            ctx.beginPath();            ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2);            ctx.fillStyle = this.color;            ctx.fill();            ctx.restore();        }    }    //移動小球    class MoveBall extends Ball{        constructor(x, y, color){            super(x, y, color);            this.dX = Math.floor(Math.random()*5+1);            this.dY = Math.floor(Math.random()*5+1);            this.dR = Math.floor(Math.random()*5+1);        }        upData(){            this.x += this.dX;            this.y += this.dY;            this.r -= this.dR;            if(this.r < 0){                this.r = 0;            }        }    }    let ballArry = [];    let colorArry = ['red', 'green', 'pink', 'yellow', 'blue'];    canvas.addEventListener("mousemove",function(e){        ballArry.push(new MoveBall(e.offsetX, e.offsetY,         colorArry[Math.floor(Math.random()*5)]));    })    setInterval(function(){        ctx.clearRect(0, 0, canvas.width, canvas.height);        for(let i=0;i<ballArry.length;i++){            ballArry[i].render();            ballArry[i].upData();        }    },50);    </script></body></html>

總結

以上所述是小編給大家介紹的ES6與canvas實現鼠標小球跟隨鼠標效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!

 

注:相關教程知識閱讀請移步到CSS教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频在线看| 国产精品成人在线| 国产精品黄色影片导航在线观看| 亚洲自拍欧美另类| 日日狠狠久久偷偷四色综合免费| 91在线无精精品一区二区| 色播久久人人爽人人爽人人片视av| 国产成人综合一区二区三区| 欧美中文字幕精品| 日韩极品精品视频免费观看| 高清视频欧美一级| 97久久伊人激情网| 成人网在线免费看| 97av视频在线| 国产福利视频一区| 国产成人鲁鲁免费视频a| 久久99国产精品自在自在app| 国产91精品久久久久久久| 欧美激情性做爰免费视频| 国产剧情久久久久久| 18性欧美xxxⅹ性满足| 亚洲人成网站999久久久综合| 中文字幕免费精品一区| 久久精品电影一区二区| 国产精品日韩在线播放| 欧美视频在线观看免费网址| 成人免费网视频| 国产日韩中文字幕在线| 国产精品成人久久久久| 精品国产成人在线| 欧美性videos高清精品| 欧美电影免费播放| 日韩欧美国产网站| 91国产美女视频| 日韩在线精品视频| 亚洲精品99久久久久中文字幕| 欧美国产极速在线| 久久国产精品久久久| 亚洲人成亚洲人成在线观看| 亚洲最大福利视频| 成人精品福利视频| 国产精品国产三级国产aⅴ9色| 亚洲欧美日韩精品久久奇米色影视| 欧美精品在线播放| 日韩在线小视频| 性色av一区二区咪爱| 日韩视频第一页| 日韩电影在线观看永久视频免费网站| 91天堂在线视频| 91精品视频在线| 国产精品电影一区| 国产午夜精品理论片a级探花| 欧美色图在线视频| 欧美精品少妇videofree| 久热在线中文字幕色999舞| 日韩电影中文字幕| 亚洲国产精彩中文乱码av| 在线亚洲欧美视频| 精品久久久久久亚洲精品| 欧美激情一区二区三区高清视频| 国产激情视频一区| 亚洲精品视频播放| 在线日韩欧美视频| 国产精品青草久久久久福利99| 久久久久久久电影一区| 日韩av在线网页| 奇米成人av国产一区二区三区| 九九精品视频在线观看| 欧美日韩国产精品一区| 欧美中文字幕第一页| 91沈先生作品| 欧美与黑人午夜性猛交久久久| 一区二区三区国产视频| 亚洲一区二区三区在线视频| 国产精品久久久久秋霞鲁丝| 久久69精品久久久久久国产越南| 在线播放日韩欧美| 精品中文字幕在线2019| 欧美小视频在线观看| 最近2019中文字幕一页二页| 中文字幕亚洲无线码在线一区| 精品福利在线看| 国产91精品久久久久久久| 亚洲男人天堂网站| 国产激情综合五月久久| 成人h视频在线观看播放| 欧美激情欧美激情| 91亚洲va在线va天堂va国| 日韩av片免费在线观看| 国产女人精品视频| 操日韩av在线电影| 久久久久久91香蕉国产| 日韩av在线免费播放| 亚洲国产日韩精品在线| 国产精品无码专区在线观看| 久久天天躁狠狠躁夜夜躁2014| 亚洲一区二区三区毛片| 久久99国产精品自在自在app| 国产91精品视频在线观看| 亚洲专区国产精品| 日韩欧美国产成人| 久久av红桃一区二区小说| 亚洲天堂av在线免费| 日韩中文娱乐网| 丝袜美腿亚洲一区二区| 国产精品电影一区| 国产精品女主播视频| 欧美日韩一区免费| 欧美国产日韩免费| 欧美有码在线观看视频| 久久精品国产综合| 国产一区二区日韩| 日韩电视剧免费观看网站| 久久亚洲影音av资源网| 欧美日韩国产综合新一区| 91日韩在线播放| 91高清视频在线免费观看| 亚洲国产成人久久综合一区| 日本成人激情视频| 欧美超级乱淫片喷水| 日韩美女视频免费看| 精品视频久久久久久久| 亚洲一区二区三区香蕉| 中文字幕亚洲欧美在线| 欧美黑人性生活视频| 亚洲欧美色图片| 亚洲已满18点击进入在线看片| 亚洲精品自产拍| 亚洲人成在线观看网站高清| 久久亚洲精品国产亚洲老地址| 亚洲欧美国产高清va在线播| 国产99久久精品一区二区| 日韩激情片免费| 久久久久久久久亚洲| 日韩久久精品电影| 久久成人国产精品| 国产69久久精品成人| 亚洲人成网站色ww在线| 亚洲人成免费电影| 欧美日韩激情视频8区| 亚洲午夜性刺激影院| 久久久久久免费精品| 91精品在线看| 日韩在线视频免费观看| 久久久黄色av| 国产视频精品xxxx| 久久精品视频在线观看| 不卡在线观看电视剧完整版| 国产精品一久久香蕉国产线看观看| 国产日韩中文在线| 国产精品视频男人的天堂| 欧美性猛交xxxx富婆弯腰| 成人黄色中文字幕| 国产亚洲欧美日韩美女| 久久97精品久久久久久久不卡| 久久久久久国产精品三级玉女聊斋| 亚洲日韩中文字幕在线播放| 亚洲欧美激情四射在线日| 成人福利网站在线观看11| 欧美在线视频免费播放| 国产精品视频在线观看| 97久久精品人人澡人人爽缅北| 91高潮精品免费porn| 久久精品国产清自在天天线|