JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落的雪花
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)飄落雪花的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)思路:
1.定義一定數(shù)量的雪花層,每層包含一個(gè)雪花;
2.雪花水平方向左右搖擺則是Math.sin()方法,正弦函數(shù);
3.雪花垂直方向則是采用自加方法每次增加一定距離;
4.雪花每個(gè)大小不一;
采用的方法如下:
Math.ceil()方法:返回大于等于其數(shù)字參數(shù)的最小整數(shù),如Math.ceil(3.4)=4;
Math.random()方法:返回介于0和1之間的隨機(jī)數(shù)(含0但不包括1);
clientWidth屬性:對(duì)象(元素)的寬度;
clientHeight屬性:對(duì)象(元素)的高度;
setTimeout(“JavaScript語(yǔ)句”,time(單位:毫秒)):2個(gè)參數(shù),設(shè)置一個(gè)超時(shí)計(jì)時(shí)器,在執(zhí)行該方法時(shí)開始計(jì)時(shí),經(jīng)過time時(shí)間后執(zhí)行JavaScript語(yǔ)句。
完整代碼如下:
<html>
<head>
<meta charset="utf-8">
<title>飄落的雪花</title>
</head>
<script language="javascript">
<!--
var snow_size=new Array();
var snow_color=new Array();
var num=50;//雪花數(shù)量
var smallest=5;//雪花最小尺寸
var largest=30;//雪花最大尺寸
var dx=new Array();//雪花左右振動(dòng)幅度大小
var xp=new Array();//水平位置
var yp=new Array();//垂直位置
var am=new Array();
var stx=new Array();//水平位移
var sty=new Array();//垂直位移
var doc_width;
var doc_height;
function makeSize(){//定義每個(gè)雪花尺寸
?? ?return smallest+Math.random()*largest;
?? ?}
function makeColor1(){//定義白色雪花
?? ?for(i=0;i<num;++i){
?? ? ? snow_color[i]='#ffffff';
?? ? ?}
?? ?}
function makeColor2(){//定義彩色雪花
?? ?for(i=0;i<num;++i){
?? ??? ?A=Math.ceil(Math.random()*255);
?? ??? ?B=Math.ceil(Math.random()*255);
?? ??? ?C=Math.ceil(Math.random()*255);
?? ??? ?snow_color[i]='rgb('+A+','+B+','+C+')';
?? ??? ?}
?? ?}
function init(){//初始化
?? ?doc_width=document.body.clientWidth;
?? ?doc_height=document.body.clientHeight;
?? ?makeColor1(); ?//白色雪花
?? ?//makeColor2(); ?//彩色雪花
?? ?for(i=0;i<num;++i){
?? ??? ?dx[i]=0;
?? ??? ?xp[i]=Math.random()*(doc_width-40);
?? ??? ?yp[i]=Math.random()*doc_height;
?? ??? ?am[i]=Math.random()*20;
?? ??? ?snow_size[i]=makeSize();
?? ??? ?stx[i]=0.02+Math.random()/10;
?? ??? ?sty[i]=0.7+Math.random();
?? ??? ?document.write("<div id='snow_"+i+"' style='position:absolute;z-index:eval(30"+i+");visibility:visible;top:15px;left:15px;font-size:"+snow_size[i]+";color:"+snow_color[i]+"'>*</div>");
?? ??? ?}
?? ?}
function snow(){
?? ?for(i=0;i<num;++i){
?? ??? ?yp[i]+=sty[i];
?? ??? ?if(yp[i]>doc_height-50){//如果雪花到達(dá)底部
?? ??? ??? ?xp[i]=Math.random()*(doc_width-am[i]-20);
?? ??? ??? ?yp[i]=0;//垂直位置重置為0
?? ??? ??? ?stx[i]=0.02+Math.random()/10;
?? ??? ? ? ?sty[i]=0.7+Math.random();
?? ??? ??? ?}
?? ??? ??? ?dx[i]+=stx[i];
?? ??? ??? ?document.getElementById("snow_"+i).style.top=yp[i];
?? ??? ??? ?document.getElementById("snow_"+i).style.left=xp[i]+am[i]*Math.sin(dx[i]);
?? ??? ?}
?? ?setTimeout("snow()",10);//間隔10毫秒調(diào)用一次snow函數(shù)
?? ?}
//-->
</script>
<body id="myBody" bgcolor="#bbbbbb">
</body>
<script language="javascript">
<!--
init();
snow();
//-->
</script>
</html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js讀寫COOKIE實(shí)現(xiàn)記住帳號(hào)或密碼的代碼(js讀寫COOKIE)
js實(shí)現(xiàn)記住帳號(hào)或密碼(js讀寫COOKIE) 的實(shí)現(xiàn)代碼,原理就是利用cookies保存于讀取功能。2010-05-05
javascript實(shí)現(xiàn)貪吃蛇經(jīng)典游戲
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)貪吃蛇經(jīng)典游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
js每隔5分鐘執(zhí)行一次ajax請(qǐng)求的實(shí)現(xiàn)方法
每隔5分鐘執(zhí)行一次ajax請(qǐng)求,如何實(shí)現(xiàn)?下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-11-11
JS時(shí)間轉(zhuǎn)換標(biāo)準(zhǔn)格式、時(shí)間戳轉(zhuǎn)換標(biāo)準(zhǔn)格式的示例代碼
這篇文章主要介紹了JS時(shí)間轉(zhuǎn)換標(biāo)準(zhǔn)格式、時(shí)間戳轉(zhuǎn)換標(biāo)準(zhǔn)格式的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Spring Boot+AngularJS+BootStrap實(shí)現(xiàn)進(jìn)度條示例代碼
一般上傳文件時(shí)都需要進(jìn)度條,本篇文章主要介紹了Spring Boot+AngularJS+BootStrap實(shí)現(xiàn)進(jìn)度條示例代碼,有興趣的可以了解一下。2017-03-03
javascript實(shí)現(xiàn)消滅星星小游戲簡(jiǎn)單版
消滅星星是一款經(jīng)典的益智手游,單位里看到同事天天在手機(jī)上玩的游戲,現(xiàn)在也有web版了,出于業(yè)余愛好,自己嘗試用javascript實(shí)現(xiàn)了下,就是略簡(jiǎn)單了點(diǎn),文中給出了完整的實(shí)例代碼,大家可以自行完善?。∠旅鎭硪黄鹂纯窗?。2016-11-11

