H5+原生js 雪花特效
概述
隨著前端技術的發展,越來越多的H5技術被應用到實際開發中,本次實現的是螢幕實現雪花飄落特效。
2 效果圖如下:
3 主要功能
實現雪花飄落。
。。。後續功能可以自己酌情新增
4實現方式
首先 ,我們需要一個容器,在這裡只需要一個div就可以了,通過div的id就可以識別該容器並通過css
對其設定樣式,程式碼如下 概述
隨著前端技術的發展,越來越多的H5技術被應用到實際開發中,本次實現的是螢幕實現雪花飄落特效。
2 效果圖如下:
3 主要功能
實現雪花飄落。
。。。後續功能可以自己酌情新增
4實現方式
首先 ,我們需要一個容器,在這裡只需要一個div就可以了,通過div的id就可以識別該容器並通過css對其設定樣式,程式碼如下:
<div class="container" id="container" ></div> <style> *{ margin: 0; padding: 0; } html,body{ height: 100%; } .container{ background-color: black; height: 100%; color: white; position: relative; overflow: hidden; } </style>
然後我們開始寫js。首先開始時,我們先通過id獲取外層容器div
,然後定義一個定時器,用於設定雪花下落的時間。
div=document.getElementById("container");
接著就是在定時器裡設定產生雪花,此時,將雪花圖片放入容器中,而且我們會產生的雪花,因此需要定義一個數組用於承放雪花。並在此處對雪花設定樣式:雪花的大小要設定隨機大小、雪花產生的位置、結束的位置、下落時旋轉的角度。程式碼如下:
setInterval(function(){ var img=document.createElement("img"); img.src="x.png"; div.appendChild(img); array.push(img); img.style.position="absolute"; img.style.top="-50px"; img.style.webkitTransition="all 5s"; //隨機雪花大小 var imgWidth=parseInt(Math.random()*10000000)%14+12; img.width=imgWidth; //隨機雪花位置 var left=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth); img.style.left=left+"px"; //隨機雪花結束位置 var leftDown=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth); var topDown=screen.availHeight+parseInt(Math.random()*10000000)%(100); //隨機雪花角度 var deg=parseInt(Math.random()*10000000)%360+360; //自定義兩個屬性 用來儲存隨機的結束位置 img.setAttribute("leftDown",leftDown); img.setAttribute("topDown",topDown); img.setAttribute("deg",deg); },50);
下面我們需要對雪花進行下落的動畫特效開始封裝方法了。建立方法downAnimation(),在方法中我們需要迴圈所有的雪花,改變每個雪花的落地位置。程式碼如下:
for(var i=0;i<array.length;i++){
var snow=array[i];
//將處理完的刪除
array.splice(i,1);
//校驗是否已經設定完終點狀態了
if(parseInt(snow.style.top)>0){
continue;
}
//獲取雪花與生俱來的終止狀態
var leftDown=snow.getAttribute("leftDown");
var topDown=snow.getAttribute("topDown");
var deg=snow.getAttribute("deg");
//重新改變left和top
snow.style.left=leftDown+"px";
snow.style.top=topDown+"px";
//重新改變雪花的角度
snow.style.transform="rotate("+deg+"deg)";
//當雪花下落到最低位置時,改變透明度
snow.style.opacity=1;
最後我們將downAnimation()方法放置到新建立的定時器中,設定下落時間。程式碼如下:
setInterval(function(){
setTimeout(function(){
downAnimation();
},1);
},50)
========================================================================================
程式完整程式碼如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
html,body{
height: 100%;
}
.container{
background-color: black;
height: 100%;
color: white;
position: relative;
overflow: hidden;
}
</style>
<script>
var div;
var array=[];
window.onload=function(){
//獲取最外層容器
div=document.getElementById("container");
//開啟定時器,產生雪花
setInterval(function(){
var img=document.createElement("img");
img.src="x.png";
div.appendChild(img);
array.push(img);
img.style.position="absolute";
img.style.top="-50px";
img.style.webkitTransition="all 5s";
//隨機雪花大小
var imgWidth=parseInt(Math.random()*10000000)%14+12;
img.width=imgWidth;
//隨機雪花位置
var left=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth);
img.style.left=left+"px";
//隨機雪花結束位置
var leftDown=parseInt(Math.random()*10000000)%(screen.availWidth-imgWidth);
var topDown=screen.availHeight+parseInt(Math.random()*10000000)%(100);
//隨機雪花角度
var deg=parseInt(Math.random()*10000000)%360+360;
//自定義兩個屬性 用來儲存隨機的結束位置
img.setAttribute("leftDown",leftDown);
img.setAttribute("topDown",topDown);
img.setAttribute("deg",deg);
},50);
setInterval(function(){
setTimeout(function(){
downAnimation();
},1);
},50)
}
/***
* 雪花下落動畫特效
*/
function downAnimation(){
//迴圈所有的雪花,改變每個雪花的落地位置
for(var i=0;i<array.length;i++){
var snow=array[i];
//將處理完的刪除
array.splice(i,1);
//校驗是否已經設定完終點狀態了
if(parseInt(snow.style.top)>0){
continue;
}
//獲取雪花與生俱來的終止狀態
var leftDown=snow.getAttribute("leftDown");
var topDown=snow.getAttribute("topDown");
var deg=snow.getAttribute("deg");
//重新改變left和top
snow.style.left=leftDown+"px";
snow.style.top=topDown+"px";
//重新改變雪花的角度
snow.style.transform="rotate("+deg+"deg)";
//改變透明度
snow.style.opacity=1;
}
// console.log(array.length+"=============");
}
</script>
</head>
<body>
<div class="container" id="container" >
</div>
</body>
</html>
相關推薦
H5+原生js 雪花特效
概述 隨著前端技術的發展,越來越多的H5技術被應用到實際開發中,本次實現的是螢幕實現雪花飄落特效。 2 效果圖如下: 3 主要功能 實現雪花飄落。 。。。後續功能可以自己酌情新增 4實現方式 首先 ,我們需要一個容器,在這裡只需要一個div就可以
h5原生js實現輪播圖
list sla head log startx creat ase hit eve 預覽地址:http://s.xnimg.cn/a90529/wap/wechatLive/test/slide.html <!DOCTYPE html> <html l
原生JS投票特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS+CSS實現投票效果 - 何問起</title> <link rel="s
js雪花特效_跟隨頁面滾動的下雪特效
這星期寧波有些地方已經開始下雪了,氣溫一下子降了很多,又快過年了。冬天最喜歡的就是下雪了,我想沒有幾個人不喜歡的,所以就從網路上到處收集有關雪花的特效,今天就來分享第一個JS雪花特效。這是個從淘寶網上拿下來的下雪特效,雪花從頁面的頂部一直往下飄落,當你向下滾動頁面時雪花又從
原生js 放大鏡特效
最近在做ecshop的二次開發,遇到一些jquery外掛與ecshop的衝突, 調整衝突的需要修改的地方又太多,修改起來得不償失, 故做了一個原生的js實現商品詳情頁面的放大鏡效果,以避免衝突! 下面介紹一下程式碼及實現過程: 首先,建立fangda.html檔案 在檔案頭
小圖形下落,類似雪花飄落,原生js
gin charset push resize select div ram 函數 edge <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta
原生JS實現的h5小遊戲-植物大戰僵屍
完成後 資源 life css lan posit 獲得 抽象 dom 代碼地址如下:http://www.demodashi.com/demo/12755.html 項目介紹 本項目是利用原生js實現的h5小遊戲-植物大戰僵屍,主要結合了一下自己對於h5小遊戲的理解,
原生js實現返回頂部特效
程序 mar document timer margin con lse hid 監聽 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&
原生js寫的雪花效果,使用畫布
<!doctype html> <html> <head> <meta charset="utf-8"> <title>雪花效果,使用畫布</title> <script src="http://libs.baidu.co
原生js仿網易雲輪播特效
原理:運用兩張圖片切換 可視區域向左走或向右走 要跳轉的圖片定位在可視區域的左邊或右邊 然後用緩動動畫實現切換 重點:緩動動畫 js實現步驟:1、獲取所需元素 2、建立指示器 3.讓第一個選中 4.新增事件 5、切換索引 6、自動輪播 1、獲取所需元素 var slider=$(
webview中巢狀html實現精準定位(百度地圖、高德地圖、騰訊地圖、H5原生定位)js對比
最近在實現一個功能,就是在安卓手機和蘋果手機嵌入html程式碼,實現精準定位,我為此對比幾種定位的方法。我要的是精準定位,就是誤差在100米左右的功能,類似與外賣app那種定位精確度 1. 首先是原生h5定位 if(browser.versions.an
原生JS實現各種經典網頁特效——Banner圖滾動、選項卡切換、廣告彈窗等
在製作網頁過程中,我們可能會遇到各種常用的經典網頁特效,比如Banner圖片滾動、選項卡迴圈播放、右下角廣告彈窗、評論提交展示、選項動態增刪、剪刀石頭布小遊戲等等等。。。是不是感覺都見到過這些場景、那些這些場景都是如何實現的呢?今天,小瑞老師就一口氣把所有經典網頁特效效果送給大家!!!
原生js可愛糖果數字時間特效
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="vi
JS打字特效 JS 原生程式碼
<html> <head> <title>打字效果的帶連結的新聞標題</title> <meta http-equiv="Content-Type
有趣的Javascript:只需一個JS讓萬惡的IE5、IE6、IE7、IE8全都支援H5原生Canvas繪圖(有演示demo)
該demo支援IE5以上任意核心的瀏覽器補充:chats.js和echarts等圖表庫也可以使用本方法相容IE6以上瀏覽器1、引入excanvas.js只需要引入一個js即可讓IE5+支援Canvas繪圖API<!--[if lte IE 8]><scrip
原生js實現拖動滑塊驗證
cnblogs tcc mvt wms 網站 hnu 按鈕 itl rip 拖動滑塊驗證是現在的網站隨處可見的,各式各樣的拖動法都有。 下面實現的是某寶的拖動滑塊驗證: <!DOCTYPE html> <html lang="en"> <he
0510日重點:原生js修改豆瓣電影api 在angularjs裏運用出現的bug
http ava move var cti tps 上下 console date 用$http.jsonp調用豆瓣電影api,會出現返回數據格式錯誤的bug。在控制器裏加上下面的代碼,才能正常獲取到數據。 function jsonp(url, ca
原生JS的HTTP請求
font sch 原生 office 請求 ref html sof nbsp ar xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(
基於原生JS+node.js+mysql打造的簡易前後端分離用戶登錄系統
power 3.2 80端口 文檔 type ima 原生 倉庫 json 一、登錄頁面 這個沒什麽說的,就放兩張圖 二、服務器端 用express(文檔)搭建服務器,數據褲用mysql(基礎語句),新建一個users,再新建一張users表,我們用這張表。 服務器主要是
使用原生JS封裝Tap事件,解決移動端300ms延遲
itl dia can 開發 閉包 tcl type 移動端 com 為了防止誤操作,移動端iOS操作系統針對原生click事件做了300ms的延遲,這在一定程度上影響了我們的使用體驗。 GitHub項目地址:https://github.com/Simon