jquery+css3實現(xiàn)網(wǎng)頁背景花瓣隨機飄落特效
飄花效果的實現(xiàn)——效果圖:

需求:
一個jquery,,,這個看標題么就知道了
jQuery Transit還有這個東西
http://github.com/rstacruz/jquery.transit
jquery對一些效果的擴展
飄花的效果稍微復(fù)雜一點,有一定量的JavaScript代碼,通過JS+CSS3的組合實現(xiàn)的。觀察右邊效果,可以大致分解飄花的實現(xiàn)
飄花比人物的層級都高
飄花數(shù)量非常多
飄花會有一定的軌跡運動
飄花帶有漸變的效果
飄花帶有旋轉(zhuǎn)的效果
飄花落到地面會消失
這里采用的JS+CSS3的結(jié)合實現(xiàn),CSS3實現(xiàn)旋轉(zhuǎn)部分,首先從布局上來說,飄花是要比所有內(nèi)部元素層級都要高,所以布局上是要與頁面li平級才可以
實現(xiàn)原理:
通過定時器調(diào)用JS代碼不斷的動態(tài)創(chuàng)建雪花節(jié)點,隨機選擇一個圖片作為其背景,賦予三個初始的樣式屬性top,left與opacity,通過transition動畫過度的方式執(zhí)行這3個屬性的動畫變化。整個原理其實也是很簡單的,主要涉及了一些細節(jié)的問題:例如元素的創(chuàng)建、圖片的隨機、開始的left與opacity的隨機處理、最終值的計算等等
執(zhí)行的流程:
getImagesName隨機6張圖片,snowflakeURl定義一個地址的范圍
createSnowBox創(chuàng)建雪花元素的節(jié)點,并且增加一個snowRoll的樣式,也就是旋轉(zhuǎn)的關(guān)鍵幀實現(xiàn)
定時器設(shè)置200ms不斷的生成雪花對象,計算出3個屬性的初始值,通過createSnowBox創(chuàng)建雪花元素,并且附上初始值,然后執(zhí)行transition附上最終值,執(zhí)行動畫
動畫結(jié)束后執(zhí)行$(this).remove() 刪除這個對象
然后精簡一下代碼,因為我只要飄花效果
<div id='content'> <!-- 飄花 --> <div id="snowflake"></div> </div>
獲取外面#content的寬高
然后#snowflake里面做效果
#content { width: 100%; height: 100%; top: 42px;
overflow: hidden; position: absolute; }
然后么css么就是這樣了,top:42px是因為我的導(dǎo)航高度
#snowflake { width: 100%; height: 100%; position: absolute; top: 0; left: 0; overflow: hidden; }
.snowRoll { position: absolute; opacity: 0; -webkit-animation-name: mysnow; -webkit-animation-duration: 20s; -moz-animation-name: mysnow; -moz-animation-duration: 20s; height: 80px; }
@-webkit-keyframes mysnow { 0% {
bottom: 100%;
}
50% {
-webkit-transform: rotate(1080deg);
}
100% {
-webkit-transform: rotate(0deg) translate3d(50px, 50px, 50px);
}
}
@-moz-keyframes mysnow { 0% {
bottom: 100%;
}
50% {
-moz-transform: rotate(1080deg);
}
100% {
-moz-transform: rotate(0deg) translate3d(50px, 50px, 50px);
}
}
這里是給飄花加旋轉(zhuǎn)之類的css3特技
<script type="text/javascript">
$(function() {
var snowflakeURl = [
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_1.png',
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_2.png',
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_3.png',
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_4.png',
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_5.png',
'http://images.cnblogs.com/cnblogs_com/LoveOrHate/723567/o_6.png'
] //js設(shè)置數(shù)組存儲6張花瓣的圖片
var container = $("#content");
visualWidth = container.width();
visualHeight = container.height();
//獲取content的寬高
///////
//飄雪花 //
///////
function snowflake() {
// 雪花容器
var $flakeContainer = $('#snowflake');
// 隨機六張圖
function getImagesName() {
return snowflakeURl[[Math.floor(Math.random() * 6)]];
}
// 創(chuàng)建一個雪花元素
function createSnowBox() {
var url = getImagesName();
return $('<div class="snowbox" />').css({
'width': 41,
'height': 41,
'position': 'absolute',
'backgroundSize': 'cover',
'zIndex': 100000,
'top': '-41px',
'backgroundImage': 'url(' + url + ')'
}).addClass('snowRoll');
}
// 開始飄花
setInterval(function() {
// 運動的軌跡
var startPositionLeft = Math.random() * visualWidth - 100,
startOpacity = 1,
endPositionTop = visualHeight - 40,
endPositionLeft = startPositionLeft - 100 + Math.random() * 500,
duration = visualHeight * 10 + Math.random() * 5000;
// 隨機透明度,不小于0.5
var randomStart = Math.random();
randomStart = randomStart < 0.5 ? startOpacity : randomStart;
// 創(chuàng)建一個雪花
var $flake = createSnowBox();
// 設(shè)計起點位置
$flake.css({
left: startPositionLeft,
opacity : randomStart
});
// 加入到容器
$flakeContainer.append($flake);
// 開始執(zhí)行動畫
$flake.transition({
top: endPositionTop,
left: endPositionLeft,
opacity: 0.7
}, duration, 'ease-out', function() {
$(this).remove() //結(jié)束后刪除
});
}, 200);
}
snowflake()
//執(zhí)行函數(shù)
})
</script>
以上代碼就是本文使用jquery實現(xiàn)網(wǎng)頁背景花瓣隨機飄落特效,希望大家喜歡。
相關(guān)文章
javascript實現(xiàn)查找數(shù)組中最大值方法匯總
本文給大家匯總了一下使用javascript實現(xiàn)查找數(shù)組中最大最小值的一些方法,非常的簡單實用,有需要的小伙伴可以來參考下。2016-02-02
js實現(xiàn)for循環(huán)跳過undefined值示例
這篇文章主要介紹了js實現(xiàn)for循環(huán)跳過undefined值,結(jié)合實例形式分析了js使用for循環(huán)針對數(shù)組的遍歷、判斷、運算等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
JavaScript實現(xiàn)復(fù)制功能各瀏覽器支持情況實測
這兩天在做Web前端時,遇到需求通過js實現(xiàn)文本復(fù)制的功能,下面與大家分享下各瀏覽器對復(fù)制功能的支持情況,感興趣的朋友可以參考下哈2013-07-07
輸入自動提示搜索提示功能的javascript:sugggestion.js
該js文件中的代碼實現(xiàn)了[輸入自動搜索提示]功能,如百度、google搜索框中輸入一些字符會以下拉列表形式給出一些提示,提高了用戶體驗2013-09-09

