您好,登錄后才能下訂單哦!
使用JavaScript實現(xiàn)一個多球運動效果?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
具體內(nèi)容如下
代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>多球運動</title> <style> *{margin:0;padding:0;} body{background-color: #90f;} .ball{position: absolute;left:0;top:0;width:100px;height:100px;background: #f0f;border-radius: 50%;} </style> </head> <body> <script> run(22)//封裝 //定義速度 var speed; function run(num){ //創(chuàng)建出num個div for(var i=0;i<num;i++){ //[2,11) 隨機(jī)速度 speed = Math.floor(Math.random()*9+2); //創(chuàng)建生成節(jié)點 var div = document.createElement("div"); //添加類名 div.className = 'ball' //自定義屬性保存值 div.speedX = Math.floor(Math.random()*9+2) div.speedY = Math.floor(Math.random()*9+2) //將div放置到body中 document.body.appendChild(div) } //獲取元素 var box = document.getElementsByClassName( "ball" ) //獲取文檔可視區(qū)域的寬高 var maxX = document.documentElement.clientWidth - box[0].offsetWidth; var maxY = document.documentElement.clientHeight - box[0].offsetHeight; //自適應(yīng)窗口 window.onresize = function(){ maxX = document.documentElement.clientWidth - box[0].offsetWidth; maxY = document.documentElement.clientHeight - box[0].offsetHeight; } play() function play(){ for(var i=0;i<num;i++){ //獲取 var ball = box[i]; var startTop = ball.offsetTop; var startLift = ball.offsetLeft; //startTop都為零; var top = startTop + ball.speedY; var left = startLift + ball.speedX; //判斷小球是否出左右邊界 if(left <= 0 || left >= maxX){ //改變方向 ball.speedX = -ball.speedX; ball.style.background=randomColor() //判斷 if(left <= 0){ left = 0; }else if(left >= maxX){ left = maxX; } } //判斷小球是否出上下邊界 if(top <= 0 || top >= maxY ){ // 改變方向; ball.speedY = -ball.speedY; ball.style.background=randomColor() //判斷 if( top <= 0 ){ top = 0; }else if( top >= maxY ){ top = maxY; } } ball.style.top = top + "px"; ball.style.left = left + "px"; } //執(zhí)行動畫幀 requestAnimationFrame(play); } //顏色隨機(jī) function randomColor() { 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>
關(guān)于使用JavaScript實現(xiàn)一個多球運動效果問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。