JavaScript實(shí)現(xiàn)多球運(yùn)動(dòng)效果
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)多球運(yùn)動(dò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>多球運(yùn)動(dòng)</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個(gè)div
for(var i=0;i<num;i++){
//[2,11) 隨機(jī)速度
speed = Math.floor(Math.random()*9+2);
//創(chuàng)建生成節(jié)點(diǎn)
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í)行動(dòng)畫幀
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js實(shí)現(xiàn)小球在頁面規(guī)定的區(qū)域運(yùn)動(dòng)
- JavaScript實(shí)現(xiàn)小球沿正弦曲線運(yùn)動(dòng)
- JS小球拋物線軌跡運(yùn)動(dòng)的兩種實(shí)現(xiàn)方法詳解
- javascript鼠標(biāo)跟隨運(yùn)動(dòng)3種效果(眼球效果,蘋果菜單,方向跟隨)
- Js實(shí)現(xiàn)簡(jiǎn)單的小球運(yùn)動(dòng)特效
- javascript實(shí)現(xiàn)10個(gè)球隨機(jī)運(yùn)動(dòng)、碰撞實(shí)例詳解
- javascript動(dòng)畫之圓形運(yùn)動(dòng),環(huán)繞鼠標(biāo)運(yùn)動(dòng)作小球
相關(guān)文章
JavaScript實(shí)現(xiàn)左側(cè)菜單效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)左側(cè)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
JavaScript實(shí)現(xiàn)簡(jiǎn)單的四則運(yùn)算計(jì)算器完整實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的四則運(yùn)算計(jì)算器,結(jié)合完整實(shí)例形式分析了javascript基于表單相應(yīng)實(shí)現(xiàn)加減乘除數(shù)學(xué)運(yùn)算的操作技巧,需要的朋友可以參考下2017-04-04
微信小程序ReferenceError:xxx?is?not?defined報(bào)錯(cuò)解決辦法
最近在學(xué)習(xí)微信小程序的開發(fā),在一個(gè)練手項(xiàng)目中竟然報(bào)錯(cuò),所以下面這篇文章主要給大家介紹了關(guān)于微信小程序ReferenceError:xxx?is?not?defined報(bào)錯(cuò)的解決辦法,需要的朋友可以參考下2023-12-12
使用BroadcastChannel進(jìn)行跨窗口通信的實(shí)例詳解
BroadcastChannel 提供了一種簡(jiǎn)單而有效的方式來實(shí)現(xiàn)同一瀏覽器環(huán)境下不同頁面或腳本之間的通信,對(duì)于需要跨窗口、標(biāo)簽頁或 iframe 同步數(shù)據(jù)的應(yīng)用場(chǎng)景,它是一種非常便捷的解決方案,本文介紹了如何使用 BroadcastChannel 進(jìn)行跨窗口通信,需要的朋友可以參考下2024-08-08
在b/s開發(fā)中經(jīng)常用到的javaScript技術(shù)
在b/s開發(fā)中經(jīng)常用到的javaScript技術(shù)...2006-08-08
Javascript快速實(shí)現(xiàn)瀏覽器系統(tǒng)通知
這篇文章給大家介紹了Javascript快速實(shí)現(xiàn)瀏覽器系統(tǒng)通知的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-08-08
原生JS實(shí)現(xiàn)首頁進(jìn)度加載動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)首頁進(jìn)度加載動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

