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

首頁 > 開發 > CSS > 正文

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

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

最近閑來無聊,看了下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實現鼠標小球跟隨鼠標效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品福利樱桃av导航| 欧美多人爱爱视频网站| 欧美午夜宅男影院在线观看| 亚洲人午夜精品免费| 国产一区二区三区在线看| 日本精品久久久久久久| 国产亚洲视频在线| 26uuu日韩精品一区二区| 久久福利视频导航| 欧美性生活大片免费观看网址| 亚洲电影av在线| 亚洲成人a级网| 中文字幕日本精品| 97欧美精品一区二区三区| 久久久噜噜噜久久| 亚洲国产精品嫩草影院久久| 在线色欧美三级视频| 黑丝美女久久久| 国产欧美精品xxxx另类| 中文字幕精品久久| xvideos成人免费中文版| 亚洲女成人图区| 国产精品免费在线免费| 久久久综合av| 亚洲精品久久久久中文字幕欢迎你| 久久亚洲精品小早川怜子66| 亚洲激情中文字幕| 亚洲国产精品国自产拍av秋霞| 蜜臀久久99精品久久久无需会员| 欧美综合国产精品久久丁香| 久久av资源网站| www欧美xxxx| 综合国产在线视频| 一区二区三区视频在线| 亚洲国产精品大全| 久久夜精品香蕉| 国产精品高潮在线| 91在线直播亚洲| 亚洲www在线观看| 欧美丰满少妇xxxxx做受| 精品综合久久久久久97| 自拍视频国产精品| 欧美性高跟鞋xxxxhd| 亚洲在线www| 不卡av在线播放| 日本精品视频网站| 国产精品免费看久久久香蕉| 91福利视频网| 久久久www成人免费精品张筱雨| 91精品国产自产91精品| 亚洲国产精品中文| 亚洲男人天堂2023| 日韩高清不卡av| 亚洲精品小视频在线观看| 国产伦精品一区二区三区精品视频| 国产精品中文字幕在线| 亚洲成人a**站| 亚洲第一页自拍| 日韩中文综合网| 热99精品只有里视频精品| 最近2019中文字幕一页二页| 欧美日韩中文字幕在线| 97**国产露脸精品国产| 欧美视频一区二区三区…| 亚洲精品欧美日韩专区| 国产日韩欧美日韩大片| 国产日韩精品入口| 午夜精品福利视频| 欧美日韩亚洲视频一区| 亚洲精品在线不卡| 成人激情视频网| 国产午夜精品全部视频在线播放| 中文字幕精品国产| 国产成人aa精品一区在线播放| 美女撒尿一区二区三区| 亚洲香蕉伊综合在人在线视看| 日韩精品一区二区视频| 欧美一区二三区| 日韩欧美国产一区二区| 国产亚洲一区二区在线| 国产一区二区欧美日韩| 欧美性极品xxxx做受| 97人人爽人人喊人人模波多| 欧美日韩国产色视频| 55夜色66夜色国产精品视频| 97在线看免费观看视频在线观看| 在线看福利67194| 国产精品视频免费在线观看| 欧美激情a在线| 中文字幕亚洲色图| 日韩精品在线视频观看| 激情久久av一区av二区av三区| 欧美激情精品久久久久久黑人| 国内精品国产三级国产在线专| 亚洲人永久免费| 欧美精品久久久久久久免费观看| 欧美疯狂xxxx大交乱88av| 欧美精品在线第一页| www高清在线视频日韩欧美| 日韩福利伦理影院免费| 国产精品美女主播| 国产午夜精品视频| 久久久久久91| 色午夜这里只有精品| 动漫精品一区二区| 亚洲一区二区久久久久久| 久久久综合免费视频| 久久夜色精品国产亚洲aⅴ| 亚洲午夜小视频| 日韩第一页在线| 97av在线视频| 国产日韩欧美在线播放| 韩国19禁主播vip福利视频| 欧美激情免费在线| 亚洲男子天堂网| 精品久久久中文| 91在线直播亚洲| 亚洲激情免费观看| 欧美性猛交xxxx黑人| 日韩精品免费综合视频在线播放| 欧美专区福利在线| 国产欧美日韩专区发布| 国外成人免费在线播放| 欧美二区在线播放| 久久精品国产久精国产一老狼| 亚洲精品狠狠操| 国产视频在线一区二区| 色偷偷偷亚洲综合网另类| 日韩男女性生活视频| 国内精品美女av在线播放| 亲子乱一区二区三区电影| 综合136福利视频在线| 亚洲**2019国产| 久久久爽爽爽美女图片| 国产成人亚洲综合91| 欧美视频中文字幕在线| 国产精品91免费在线| 色综合久久88色综合天天看泰| 91在线播放国产| 亚洲欧美精品在线| 国产精品91久久久| 日本电影亚洲天堂| 亚洲一区二区少妇| 日韩高清人体午夜| 国产视频久久久久久久| 一区二区日韩精品| 亚洲欧美制服第一页| 久久久亚洲成人| 成人午夜在线视频一区| 亚洲最大的成人网| 久久电影一区二区| 亚洲欧美激情四射在线日| 91精品国产综合久久香蕉| 欧美中文在线视频| 国产精品一区电影| 色婷婷综合久久久久中文字幕1| 91网站在线免费观看| 久久亚洲综合国产精品99麻豆精品福利| 成人中心免费视频| 久久精品国产69国产精品亚洲| 国产精品国产三级国产专播精品人| 一色桃子一区二区| 欧美亚洲视频在线观看| 亚洲天堂av在线免费|