javascript+css3開(kāi)發(fā)打氣球小游戲完整代碼

效果知識(shí)點(diǎn):
css3畫(huà)氣球, 自定義屬性運(yùn)用,隨機(jī)陣列, DOM元素操作,高級(jí)回調(diào)函數(shù)與參數(shù)復(fù)傳,動(dòng)態(tài)布局,鼠標(biāo)事件,定時(shí)器運(yùn)用,CSS3新增樣式等。
css代碼如下:
<style>
{margin:0;padding:0;}
body{background:#434343;overflow:hidden}
.balloon{
position:absolute;
left:0;
top:0;
margin:auto;
width:160px;
height:160px;
圓角: 左上 右上 右下 左下
/
css3旋轉(zhuǎn) 順時(shí)針旋轉(zhuǎn)45度
/
background:#faf9f9;
x軸的位置 y軸的位置 影子擴(kuò)散程度 模糊度 顏色
/
}
.balloon:after{
偽元素的內(nèi)容
/
display:block;
position:absolute;
因?yàn)闅馇蚴切D(zhuǎn)的 現(xiàn)在的正下方其實(shí)是右下角*/
right:0px;
width:0px;
height:0px;
border:8px solid #dbbdbd;
border-top-color:transparent;
border-bottom-color:transparent;
border-left-color:transparent;
transform:rotate(45deg);
border-radius:16px;
}
#wrap{
width:200px;
height:200px;
background:red;
}
</style>
javascript代碼如下:
<script>
var num = 10; // 聲明遍歷num 為div的數(shù)量
//var oBody = document.querySelector('body'); //h5 api 獲取元素的方法
var oBody=document.documentElement || document.body; //body獲取兼容性寫(xiě)法
var wW=window.innerWidth; //獲取瀏覽器窗口的寬度
var wH=window.innerHeight; //獲取瀏覽器窗口高度
var timer=null; //初始化定時(shí)器變量
init(num);
function init(num){
for(var i=0;i<num;i++){ //for循環(huán) 循環(huán)加工廠
var randomL=Math.random()*wW; // 隨機(jī)left范圍
randomL=Math.min(wW-160,randomL); //規(guī)范left位置
var balloon = document.createElement('div'); //用js生成標(biāo)簽
balloon.className='balloon'; //給創(chuàng)建的div元素設(shè)置類名
balloon.style.left=randomL+'px'; //改變?cè)氐臉邮街械膌eft的值
balloon.style.top=wH+'px';
balloon.speed=Math.random()*5+1; //自定義屬性 創(chuàng)建元素的時(shí)候添加
oBody.appendChild(balloon); //body中添加 元素對(duì)象
}
}
timer=setInterval(function(){
var oBall=document.querySelectorAll('.balloon');//獲取頁(yè)面所有的氣球
for(var i=0,len=oBall.length;i<len;i++){
oBall[i].style.top = oBall[i].offsetTop-oBall[i].speed+'px';
oBall[i].onclick=function(){ //誰(shuí) 觸發(fā)了什么 誰(shuí)做了什么事情
crash(this,function(xxx){
clearInterval(xxx.timer); //清除動(dòng)畫(huà)定時(shí)器
xxx.parentNode.removeChild(xxx);
});
//this.parentNode.removeChild(this);
init(1);
}
}
},30);
function crash(ele,cb){ //被點(diǎn)擊之后撒氣效果
ele.timeouter=setTimeout(function(){
cb&&cb(ele);
},500)
ele.timer=setInterval(function(){
ele.speed++; //加速度自增
ele.style.top=ele.offsetTop-ele.speed+'px'; //加速逃離
ele.style.width=ele.offsetWidth-10+'px'; //寬度減少
ele.style.height=ele.offsetHeight-10+'px'; //高度減少
},30)
}
</script>
總結(jié)
以上所述是小編給大家介紹的javascript+css3開(kāi)發(fā)打氣球小游戲完整代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
JS實(shí)現(xiàn)的駝峰式和連字符式轉(zhuǎn)換功能分析
這篇文章主要介紹了JS實(shí)現(xiàn)的駝峰式和連字符式轉(zhuǎn)換功能,結(jié)合實(shí)例形式分析了JS實(shí)現(xiàn)字符串的駝峰式與連接符式轉(zhuǎn)換的實(shí)現(xiàn)技巧,涉及js字符串遍歷、轉(zhuǎn)換及正則表達(dá)式相關(guān)操作方法,需要的朋友可以參考下2016-12-12
Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法
這篇文章主要介紹了Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法,涉及javascript動(dòng)態(tài)操作表格的相關(guān)技巧,需要的朋友可以參考下2015-05-05
如何使用json在前后臺(tái)進(jìn)行數(shù)據(jù)傳輸實(shí)例介紹
需要把這些輸入寫(xiě)入數(shù)據(jù)庫(kù),這里就用到j(luò)son傳入,先看一下后臺(tái)如何生成要傳輸?shù)臄?shù)據(jù),感興趣的朋友可以參考下,希望可以幫助到你2013-04-04
javascript 模擬坦克大戰(zhàn)游戲(html5版)附源碼下載
這篇文章主要介紹了javascript 模擬坦克大戰(zhàn)游戲關(guān)鍵點(diǎn)和遇到的問(wèn)題及實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-04-04
利用Plupload.js解決大文件上傳問(wèn)題, 帶進(jìn)度條和背景遮罩層
本篇文章主要介紹了c#+Plupload.js解決大容量文件上傳問(wèn)題, 帶進(jìn)度條和背景遮罩層,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
javascript獲取下拉列表框當(dāng)中的文本值示例代碼
需要將用戶點(diǎn)擊下拉列表當(dāng)中某個(gè)選項(xiàng)后,將其所選的內(nèi)容保存起來(lái),下面與大家分享下如何使用js獲取下拉列表框文本值,由此需求的朋友可以參考下2013-07-07
javascript單頁(yè)面手勢(shì)滑屏切換原理詳解
這篇文章主要為大家詳細(xì)介紹了javascript單頁(yè)面手勢(shì)滑屏切換原理,感興趣的小伙伴們可以參考一下2016-03-03
js高手進(jìn)階實(shí)用語(yǔ)法的高級(jí)寫(xiě)法
這篇文章主要介紹了js高手進(jìn)階實(shí)用語(yǔ)法的高級(jí)寫(xiě)法的相關(guān)資料,需要的朋友可以參考下2023-08-08

