下雪了 javascript實(shí)現(xiàn)雪花飛舞
本文實(shí)例為大家分享了雪花飛舞效果javascript實(shí)現(xiàn),供大家參考,具體內(nèi)容如下
原理:
1、js動(dòng)態(tài)創(chuàng)建DIV,指定CLASS類設(shè)置不同的背景圖樣式顯示不同的雪花效果。
2、js獲取創(chuàng)建的DIV并改變其top屬性值,當(dāng)下落的高度大于屏幕高后刪除該移動(dòng)div
3、好像不夠完善勿噴
效果預(yù)覽:http://wjf444128852.github.io/demo02/snow/index.html
HTML代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>雪花飛舞</title> <link rel="stylesheet" href="css/index.css"> <script src="js/move.js"></script> </head> <body> <div class="snow_parent" id="js_sonw"> </div> </body> </html>
CSS代碼
*{
margin:0;
padding:0;
list-style: none;
border: none;
}
body{
width: 100%;
height:600px;
background:#000;
}
.snow_parent{
position: relative;
width: 100%;
height:100%;
overflow: hidden;
margin: 0 auto;
}
.snow_parent div.parent{
background-image: url(../img/snow.png);
float: left;
-webkit-transform: scale(.1);
-moz-transform: scale(.1);
-o-transform: scale(.1);
-ms-transform: scale(.1);
transform: scale(.1);
position: absolute;
}
.snow_one{
width: 180px;
height: 180px;
background-position:0 0;
background-repeat: no-repeat;
left:-70px;
top: -95px;
}
.snow_two{
width: 140px;
height: 140px;
background-position:-220px -18px;
left:-30px;
top: -75px;
}
.snow_three{
width:150px;
height: 150px;
background-position:-400px -15px;
left:-20px;
top: -80px;
}
.snow_four{
width: 160px;
height: 160px;
background-position:-10px -206px;
}
.snow_four{
left:-10px;
top: -85px;
}
JS代碼:
/*
creatBy jiucheng 2016-4-24
*/
window.onload=function(){
init();
}
// 創(chuàng)建DIV
function creatDiv(){
// 創(chuàng)建DIV并追加到父元素
var snowDiv=document.createElement("div");
document.getElementById("js_sonw").appendChild(snowDiv);
// 讓創(chuàng)建DIV的class為隨機(jī),顯示不同的雪花
var whatName=["snow_one parent","snow_two parent","snow_three parent","snow_four parent"];
var index=Math.floor(Math.random()*whatName.length);
snowDiv.className=whatName[index];
// 獲取該DIV的left屬性值(隨機(jī)的)并賦值給創(chuàng)建的DIV
var whatLeft=getLeft()+'px';
snowDiv.style.left=whatLeft;
return snowDiv;
}
// 獲取隨機(jī)left屬性值
function getLeft(){
// 獲取該DIV的最大left屬性值即父元素的寬度
var eleParent=document.getElementById("js_sonw");
// 獲取父元素的所有style樣式
var style=window.getComputedStyle(eleParent);
// CSS中的left是負(fù)數(shù)這里得減去下
var maxWidth=parseInt(style.width)+70;
// 讓創(chuàng)建的DIV的left為隨機(jī)值
var randomLeft=Math.floor(Math.random()*maxWidth);
return randomLeft;
}
// 讓其向下移動(dòng)
function moveDown(){
// 獲取移動(dòng)對象
var moveElem=creatDiv();
// 獲取移動(dòng)對象的所有style屬性值
var eleStyle=window.getComputedStyle(moveElem);
// 獲取它的top屬性值
var eleTop=parseInt(eleStyle.top);
// 設(shè)置定時(shí)器動(dòng)態(tài)改變移動(dòng)對象的top屬性值
var t=setInterval(function(){
eleTop++;
// 把新的top值付給移動(dòng)對象
moveElem.style.top=eleTop+"px";
// 當(dāng)下落到屏幕的高度后停止定時(shí)器并把該移動(dòng)對象從父元素刪除
if(eleTop>=window.innerHeight){
clearInterval(t);
document.getElementById("js_sonw").removeChild(moveElem);
}
},10);//下落速度沒10毫秒下落1px
}
function init(){
// 動(dòng)態(tài)獲取并設(shè)置body的高度
document.body.style.height=window.innerHeight+"px";
// 每500毫秒創(chuàng)建一個(gè)移動(dòng)對象并執(zhí)行移動(dòng)函數(shù)
var t=setInterval(function(){
moveDown();
},100);
}
以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)javascript程序設(shè)計(jì)有所幫助。
- 使用js實(shí)現(xiàn)雪花飄落效果
- 用js代碼和插件實(shí)現(xiàn)wordpress雪花飄落效果的四種方法
- 使用javascript實(shí)現(xiàn)雪花飄落的效果
- JS和JQuery實(shí)現(xiàn)雪花飄落效果
- JS實(shí)現(xiàn)的雪花飄落特效示例
- Js Snowflake(雪花算法)生成隨機(jī)ID的實(shí)現(xiàn)方法
- 原生JS實(shí)現(xiàn)的雪花飄落動(dòng)畫效果
- JS實(shí)現(xiàn)模擬風(fēng)力的雪花飄落效果
- JS實(shí)現(xiàn)炫酷雪花飄落效果
- JavaScript實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁飄落的雪花
相關(guān)文章
跟我學(xué)習(xí)javascript創(chuàng)建對象(類)的8種方法
跟我學(xué)習(xí)javascript創(chuàng)建對象(類)的8種方法,每一種方法都有詳細(xì)的介紹,不知道javascript如何創(chuàng)建對象的朋友,不要錯(cuò)過這篇文章。2015-11-11
計(jì)算100000數(shù)組js腳本的執(zhí)行時(shí)間
計(jì)算100000數(shù)組js腳本的執(zhí)行時(shí)間...2006-10-10
JS實(shí)現(xiàn)的點(diǎn)擊按鈕圖片上下滾動(dòng)效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)的點(diǎn)擊按鈕圖片上下滾動(dòng)效果,涉及javascript事件響應(yīng)及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-01-01
小議Function.apply() 之一------(函數(shù)的劫持與對象的復(fù)制)
小議Function.apply() 之一------(函數(shù)的劫持與對象的復(fù)制)...2006-11-11
深入理解JavaScript系列(27):設(shè)計(jì)模式之建造者模式詳解
這篇文章主要介紹了深入理解JavaScript系列(27):設(shè)計(jì)模式之建造者模式詳解,建造者模式可以將一個(gè)復(fù)雜對象的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示,需要的朋友可以參考下2015-03-03
容易造成JavaScript內(nèi)存泄露幾個(gè)方面
這篇文章主要介紹了容易造成JavaScript內(nèi)存泄露幾個(gè)方面,本文講解了多個(gè)會在Chrome V8中產(chǎn)生內(nèi)存泄漏的示例,需要的朋友可以參考下2014-09-09

