js面向?qū)ο笤陝?dòng)的小球

效果圖


效果圖

代碼如下:

css代碼

*{

margin: 0;

padding: 0;

}

/* 設(shè)置html和body標(biāo)簽的寬高和瀏覽器可視區(qū)域一樣*/

html, body{

width: 100%;

height: 100%;

}

/* 設(shè)置小球移動(dòng)范圍的相關(guān)樣式*/

#wrap{

width: 100%;

height: 100%;

background-color: black;

position: relative;

overflow: hidden;

}

.boll{

position: absolute;

border-radius: 50%;

}


js代碼

window.onload = function () {

//工具函數(shù):產(chǎn)生指定范圍內(nèi)的隨機(jī)數(shù)

function randFn(min, max) {

return parseInt(Math.random() * (max - min) + min);

}

//獲取容器節(jié)點(diǎn)(減少document操作次數(shù),減少損耗)

var wrap = document.querySelector('#wrap');

// 創(chuàng)建小球?qū)ο蟮臉?gòu)造函數(shù)

function Boll(wh) {

// 隨機(jī)產(chǎn)生小球的寬高

var wh = randFn(20, 50);

// 設(shè)置寬高屬性和屬性值

this.width = wh;

this.height = wh;

// 設(shè)置小球誕生點(diǎn)的坐標(biāo)屬性

this.top = randFn(0, document.body.offsetHeight - wh)? + 'px';

this.left = randFn(0, document.body.offsetWidth - wh) + 'px';

//設(shè)置小球隨機(jī)背景顏色 rgba

//rgba(255,255,255,0.5)

this.color = 'rgba(' + randFn(0, 255) + ',' + randFn(0,255) + ',' + randFn(0, 255) + ',' + Math.random() + ')';

// 設(shè)置小球隨機(jī)移動(dòng)速度的屬性

this.speedX = randFn(-10, 10);

this.speedY = randFn(-10, 10);

// 設(shè)置保存小球標(biāo)簽的屬性

this.div = document.createElement('div');

}

// 原型方法: 繪制小球(配置div標(biāo)簽的相關(guān)css樣式,然后把標(biāo)簽接進(jìn)文檔流)

Boll.prototype.draw = function () {

this.div.className = 'boll';

// 配置小球?qū)捀?/p>

this.div.style.width = this.width + 'px';

this.div.style.height = this.height + 'px';

//小球誕生點(diǎn)

this.div.style.top = this.top;

this.div.style.left = this.left;

//小球背景顏色

this.div.style.backgroundColor = this.color;

// 把配置好的節(jié)點(diǎn)拼接進(jìn)文檔流

wrap.appendChild(this.div);

}

// 原型方法:讓小球移動(dòng),且碰壁反彈

Boll.prototype.run = function () {

//因?yàn)樵诙〞r(shí)器中使用的this指針是指向window對(duì)象的,要在定時(shí)器中獲取當(dāng)前操作的小球?qū)ο?就必須在定時(shí)器外部用變量把當(dāng)前操作小球?qū)ο蟊4嫦聛?lái),在定時(shí)器內(nèi)部通過(guò)該變量獲取小球?qū)ο?/p>

var self = this;

setInterval(function () {

//判斷小球是否撞墻

var tag = self.div

if (tag.offsetLeft + tag.offsetWidth >= wrap.offsetWidth || tag.offsetLeft < 0) {

self.speedX *= -1;

}

if (tag.offsetTop + tag.offsetHeight >= wrap.offsetHeight || tag.offsetTop < 0) {

self.speedY *= -1;

}

tag.style.left = tag.offsetLeft + self.speedX + 'px';

tag.style.top = tag.offsetTop + self.speedY + 'px';

},30)

}

for (var i = 0; i < 100; i++) {

//創(chuàng)建小球?qū)ο?/p>

var boll = new Boll();

//調(diào)用對(duì)象繪制方法,把小球繪制進(jìn)文檔

boll.draw();

//調(diào)用小球移動(dòng)

boll.run();

}

}


html

//小球移動(dòng)范圍

<div id = 'wrap'>

</div>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仁烹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌开泽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件站绪,死亡現(xiàn)場(chǎng)離奇詭異贴唇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)栋艳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)恰聘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吸占,你說(shuō)我怎么就攤上這事晴叨。” “怎么了矾屯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵兼蕊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我问拘,道長(zhǎng)遍略,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任骤坐,我火速辦了婚禮绪杏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纽绍。我一直安慰自己蕾久,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拌夏。 她就那樣靜靜地躺著僧著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪障簿。 梳的紋絲不亂的頭發(fā)上盹愚,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音站故,去河邊找鬼皆怕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛西篓,可吹牛的內(nèi)容都是我干的愈腾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岂津,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼虱黄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吮成,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤橱乱,失蹤者是張志新(化名)和其女友劉穎辜梳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仅醇,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冗美,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了析二。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粉洼。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叶摄,靈堂內(nèi)的尸體忽然破棺而出属韧,到底是詐尸還是另有隱情,我是刑警寧澤蛤吓,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布宵喂,位于F島的核電站,受9級(jí)特大地震影響会傲,放射性物質(zhì)發(fā)生泄漏锅棕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一淌山、第九天 我趴在偏房一處隱蔽的房頂上張望裸燎。 院中可真熱鬧,春花似錦泼疑、人聲如沸德绿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)移稳。三九已至,卻和暖如春会油,著一層夾襖步出監(jiān)牢的瞬間个粱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工翻翩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留几蜻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓体斩,卻偏偏與公主長(zhǎng)得像言询,于是被迫代替她去往敵國(guó)和親棚贾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棕硫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容