原生js實現(xiàn)彈動小球效果
本文實例為大家分享了JavaScript實現(xiàn)彈動小球效果展示的具體代碼,供大家參考,具體內(nèi)容如下
源碼展示
<!doctype html> <html> <head> <meta charset="utf-8"> <title>彈彈球(原生js)</title> ? <style> * { ?? ?margin:0; ?? ?padding:0; ?? ?font-family:Microsoft YaHei,serif; } li { ?? ?list-style:none; } .ball { ?? ?position:absolute; ?? ?top:0; ?? ?left:0; ?? ?width:100px; ?? ?height:100px; ?? ?background:pink; ?? ?border-radius:50%; } </style> </head> <body> <div></div> ? <script> ? play(10); ? ? function play(num) { ? ? ? //生成num個div ? ? ? for (var i = 0; i < num; i++) { ? ? ? ? ? var Div = document.createElement("div"); ? ? ? ? ? Div.className = "ball"; ? ? ? ? ? Div.leftVal = 3 + i; //預(yù)存每個球的初始速度 ? ? ? ? ? Div.topVal = 3 + i; //預(yù)存每個球的初始速度 ? ? ? ? ? Div.style.backgroundColor = randomC(); ? ? ? ? ? document.body.appendChild(Div); ? ? ? } ? ? ? ? var aBall = document.querySelectorAll(".ball"); ? ? ? maxTop = document.documentElement.clientHeight - aBall[0].clientHeight, //獲取top的最大值 ? ? ? ? ? maxLeft = document.documentElement.clientWidth - aBall[0].clientWidth; //獲取left的最大值 ? ? ? ? window.onresize = function() { ? ? ? ? ? maxTop = document.documentElement.clientHeight - aBall[0].clientHeight; //獲取top的最大值 ? ? ? ? ? maxLeft = document.documentElement.clientWidth - aBall[0].clientWidth; // ? ? ? }; ? ? ? ? auto(); ? ? ? ? function auto() { ? ? ? ? ? for (var i = 0; i < num; i++) { ? ? ? ? ? ? ? var Ball = aBall[i], ? ? ? ? ? ? ? ? ? startL = Ball.offsetLeft, //取每個球的初始left和TOP值 ? ? ? ? ? ? ? ? ? startT = Ball.offsetTop, //取每個球的初始left和TOP值 ? ? ? ? ? ? ? ? ? Left = startL + Ball.leftVal, //改變,每個球的left和top值 ? ? ? ? ? ? ? ? ? Top = startT + Ball.topVal; //改變,每個球的left和top值 ? ? ? ? ? ? ? ? ? if (Left >= maxLeft || Left <= 0) { ? ? ? ? ? ? ? ? ? Left = Math.min(Left, maxLeft); //限制Left的最大值 ? ? ? ? ? ? ? ? ? Left = Math.max(Left, 0); //限制最小值 ? ? ? ? ? ? ? ? ? ? Ball.leftVal = -Ball.leftVal; ? ? ? ? ? ? ? ? ? Ball.style.backgroundColor = randomC(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? if (Top >= maxTop || Top <= 0) { ? ? ? ? ? ? ? ? ? Ball.topVal = -Ball.topVal; ? ? ? ? ? ? ? ? ? ? Top = Math.min(Top, maxTop); //限制Left的最大值 ? ? ? ? ? ? ? ? ? Top = Math.max(Top, 0); //限制最小值 ? ? ? ? ? ? ? ? ? Ball.style.backgroundColor = randomC(); ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? Ball.style.top = Top + "px"; ? ? ? ? ? ? ? Ball.style.left = Left + "px"; ? ? ? ? ? } ? ? ? ? ? requestAnimationFrame(auto) ? ? ? ? } ? ? ? // rgb(0-255) ? ? ? function randomC() { ? ? ? ? ? var r = Math.floor(Math.random() * 256), ? ? ? ? ? ? ? g = Math.floor(Math.random() * 256), ? ? ? ? ? ? ? b = Math.floor(Math.random() * 256); ? ? ? ? ? return "rgb(" + r + "," + g + "," + b + ")"; ? ? ? } ? ? } </script> ? </body> </html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于在Typescript中做錯誤處理的方式詳解
錯誤處理是軟件工程重要的一部分,如果處理得當(dāng),它可以為你節(jié)省數(shù)小時的調(diào)試和故障排除時間,我發(fā)現(xiàn)了與錯誤處理相關(guān)的三大疑難雜癥:TypeScript的錯誤類型,變量范圍和嵌套,讓我們逐一深入了解它們帶來的撓頭問題,感興趣的朋友可以參考下2023-09-09JavaScript實現(xiàn)替換字符串中最后一個字符的方法
這篇文章主要介紹了JavaScript實現(xiàn)替換字符串中最后一個字符的方法,涉及javascript字符串的轉(zhuǎn)換與運算相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Firefox下設(shè)為主頁的JavaScript代碼
在IE下,我們可以輕松使用以下代碼來實現(xiàn)設(shè)置主頁 但在firefox我們需要做的更多2008-09-09javascript排序函數(shù)實現(xiàn)數(shù)字排序
這篇文章主要介紹了javascript排序函數(shù)實現(xiàn)數(shù)字排序的相關(guān)資料,附上示例,需要的朋友可以參考下2015-06-06js和jquery批量綁定事件傳參數(shù)一(新豬豬原創(chuàng))
js綁定事件傳參,javascript綁定事件傳參數(shù),jquery綁定事件傳參數(shù)2010-06-06十個開發(fā)人員面臨的最常見的JavaScript問題總結(jié)
今天,JavaScript?是幾乎所有現(xiàn)代?Web?應(yīng)用的核心。這就是為什么JavaScript問題,以及找到導(dǎo)致這些問題的錯誤,是?Web?發(fā)者的首要任務(wù)。本文總結(jié)了十個常見的問題及解決方法,需要的可以參考一下2022-11-11