首頁  >  文章  >  web前端  >  用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧

用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:26:352466瀏覽

冬天到了,很多的部落格空間都加了雪花的效果,於是去看了看他們的效果實現。有好幾個效果代碼,就拿過來了,有需要的朋友可以拿過去試試看。

雪花大圖:

用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧

效果代碼一

<script type="text/javascript" language="javascript">
(function() {
function k(a, b, c) {
if (a.addEventListener) a.addEventListener(b, c, false);
else a.attachEvent && a.attachEvent("on" + b, c)
}
function g(a) {
if (typeof window.onload != "function") window.onload = a;
else {
var b = window.onload;
window.onload = function() {
b();
a()
}
}
}
function h() {
var a = {};
for (type in {
Top: "",
Left: ""
}) {
var b = type == "Top" &#63; "Y": "X";
if (typeof window["page" + b + "Offset"] != "undefined")
a[type.toLowerCase()] = window["page" + b + "Offset"];
else {
b = document.documentElement.clientHeight &#63; document.documentElement: document.body;
a[type.toLowerCase()] = b["scroll" + type]
}
}
return a
}
function l() {
var a = document.body,
b;
if (window.innerHeight) b = window.innerHeight;
else if (a.parentElement.clientHeight) b = a.parentElement.clientHeight;
else if (a && a.clientHeight) b = a.clientHeight;
return b
}
function i(a) {
this.parent = document.body;
this.createEl(this.parent, a);
this.size = Math.random() * 5 + 5;
this.el.style.width = Math.round(this.size) + "px";
this.el.style.height = Math.round(this.size) + "px";
this.maxLeft = document.body.offsetWidth - this.size;
this.maxTop = document.body.offsetHeight - this.size;
this.left = Math.random() * this.maxLeft;
this.top = h().top + 1;
this.angle = 1.4 + 0.2 * Math.random();
this.minAngle = 1.4;
this.maxAngle = 1.6;
this.angleDelta = 0.01 * Math.random();
this.speed = 2 + Math.random()
}
var j = false;
g(function() {
j = true
});
var f = true;
window.createSnow = function(a, b) {
if (j) {
var c = [],
m = setInterval(function() {
f && b > c.length && Math.random()
< b * 0.0025 && c.push(new i(a)); ! f && !c.length && clearInterval(m);
for (var e = h().top, n = l(), d = c.length - 1; d >= 0; d--)
if (c[d]) if (c[d].top < e || c[d].top + c[d].size + 1 > e + n) {
c[d].remove();
c[d] = null;
c.splice(d, 1)
} else {
c[d].move();
c[d].draw()
}
},
40);
k(window, "scroll",
function() {
for (var e = c.length - 1; e >= 0; e--) c[e].draw()
})
} else g(function() {
createSnow(a, b)
})
};
window.removeSnow = function() {
f = false
};
i.prototype = {
createEl: function(a, b) {
this.el = document.createElement("img");
this.el.setAttribute
("src", b + "雪花图片的绝对链接地址");
this.el.style.position = "absolute";
this.el.style.display = "block";
this.el.style.zIndex = "99999";
this.parent.appendChild(this.el)
},
move: function() {
if (this.angle < this.minAngle || this.angle > this.maxAngle)
this.angleDelta = -this.angleDelta;
this.angle += this.angleDelta;
this.left += this.speed * Math.cos(this.angle * Math.PI);
this.top -= this.speed * Math.sin(this.angle * Math.PI);
if (this.left < 0) this.left = this.maxLeft;
else if (this.left > this.maxLeft) this.left = 0
},
draw: function() {
this.el.style.top = Math.round(this.top) + "px";
this.el.style.left = Math.round(this.left) + "px"
},
remove: function() {
this.parent.removeChild(this.el);
this.parent = this.el = null
}
}
})();
createSnow("", 40);
</script>

將以上面程式碼直接複製並貼上到主題中的Header或Footer檔案中,如果你只想讓文章頁面顯示,那就直接加入single就可以了。 下面把雪花圖片(所需的素材)提供給大家,用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧小圖片: 需要大家上傳到自己的博客的當前使用的主題中,然後把代碼中的鏈接改成圖片所在的位置即可。效果如本頁所示.

效果代碼二:

 <html>
<head>
<script>
function start(){
var array=new Array();
var canvas=document.getElementById("mycanvas");
var context=canvas.getContext("2d");
for(var i=0;i<50;i++){
var Show用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧=new show用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧();
array.push(Show用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧);
}
time=setInterval(function (){
context.clearRect(0,0,canvas.width,canvas.height);
for(var i=0;i<array.length;i++){
array[i].move();
array[i].draw(context);
}
},500);
}
function show用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧(){
var y=parseInt(Math.random()*50)*10;
var x=parseInt(Math.random()*80)*10;
this.draw=function(context){
context.font="50px Calibri";
context.fillText("*",x,y);
}
this.move=function(){
y+=20;
if(y>600){
y=0;
}
}
}
</script>
</head>
<body>
<input type="button" value="start" onclick="start()" />
<br/>
<canvas id="mycanvas" height="600px" width="600px" style="border: 3px solid blue"></canvas>
</body>
</html>

這個效果示範如下(感覺比較醜,不建議):

效果代碼三

其實實作WordPress部落格飄落雪花的還可以用 let it 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧 外掛。

let it 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧插件使用方法我就在這裡不嘮叨了,和其它插件安裝沒啥區別,可以直接去下載上傳文件夾let it 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧裡面的文件到/wp-content/plugins/目錄,然後啟用此插件,在WordPress的管理面板選單設定插件即可。或是在後頭插件庫裡面直接搜索,也可以找到。

let it 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧 官方網站:點擊訪問

效果代碼四

在網路上看到一個非常強大的SnowStorm外掛。和牛逼啊,好像是google上搜let it 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧會有下雪以及霜凍效果的代碼,很有創意。覺得好的童鞋可以自己去官網看看。

網路上找了一個簡單的隨機的雪花飄落效果程式碼分享給大家(這個效果是純程式碼寫的。雪花就是*。):

稍微解釋下裡面的幾個函數:

1、letItSnow()

就是下雪啦(這句依舊是廢)。然後就呼叫createSnow來產生雪花。

2、createSnow()

產生雪花每個雪花都是一個標籤,裡面放一個「*」模擬雪花(google那個copy不下來,居然顯示為空格,我了個太陽…),然後放到一個大容器叫用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box裡面,產生的個體push進iArray裡面收集起來。雪花採用的是以用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box為參考的絕對定位方式,top為0px,left就用Math.random()*window.screen.width,讓雪花隨機在螢幕寬度中產生。

用color來控制雪花的顏色深淺產生景深,範圍在0~200之間
用fontSize來控制雪花的大小,範圍在10px~15px之間
用time來控制雪花飄落的呼叫間隔,範圍在40ms~50ms之間
用用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Interval控制雪花產生的間隔,範圍在500ms~1000ms之間

然後遞歸呼叫本身,不停產生雪花。

3、fallDown()

顧名思義就是讓雪花飄落,飄落速度speed為2px,即每次縱向下降2px。這個時候做一個檢測,如果雪花下降到固定高度下,即比父容器還高,那麼就remove掉它,這樣可以減輕瀏覽器的壓力,要不然太多雪花會導致瀏覽器越走越慢,反正已經給overflow:hidden掉看不見了,眼不見為淨。然後在縱向下降的同時呼叫個windBlow函數,讓雪花下降的藝術些。

4、windBlow()

一個命名貌似風吹,其實真是風吹的效果(這話更廢.哈哈.),利用一個Math.sin()來產生雪花在空中迂迴飄蕩的效果,這樣雪花就不會單調的直線下降,而是蛇形飄落,控制好飄落的間隔,這樣連續性比較好,看起來也舒服些。

function letItSnow(){
	var 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box=document.getElementById("用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box");
	var iArray=new Array();
	createSnow(用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box,iArray);

}
function fallDown(temObj,iArray){
	var speed=2;
	var top=parseInt(temObj.style.top);
	if(top>510){//当到超过高度时候就删了它,减轻浏览器压力
		for(var i=0;i<iArray.length;i++){
			if(temObj==iArray[i]){
				iArray.splice(i,1);
				var 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box=document.getElementById("用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box");
				用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box.removeChild(temObj);
				return false;
			}
		}
	}
	temObj.style.top=top+speed+"px";
	var wind=windBlow(temObj,top);
	temObj.style.left=parseInt(temObj.style.left)+wind*2+"px";
}
function windBlow(temObj,top){
	if(parseInt(Math.random())%2==1)
	return Math.sin(top/16);
	else return Math.cos(top/16);
}
function createSnow(用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box,iArray){
	var temObj=document.createElement("i");
	var temText=document.createTextNode("*");
	temObj.appendChild(temText);
	temObj.style.left=parseInt(Math.random()*window.screen.width)+"px";
	temObj.style.top="0px";
	var temNum=parseInt(Math.random()*200);
	temObj.style.color="#"+temNum.toString(16)+temNum.toString(16)+temNum.toString(16);
	iArray.push(temObj);
	用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box.appendChild(temObj);
	var temNum=0;
	while(temNum<10){
		temNum=parseInt(Math.random()*15);
	}
	temObj.style.fontSize=temNum+"px";

	var time=0;
	while(time<40){
		time=parseInt(Math.random()*50);
	}
	temObj.timer=setInterval(function(){
		fallDown(temObj,iArray);								
	},time);
	var 用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Interval=0;
	while(用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Interval<500){
		用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Interval=parseInt(Math.random()*1000);
	}
	var createTimer=setTimeout(function(){
		createSnow(用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Box,iArray);	
		clearTimeout(createTimer);
	},用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧Interval);
}

示範網址:http://demo.jb51.net/js/2014/用js程式碼和外掛程式實現wordpress雪花飄落效果的四種方法_javascript技巧/

好了,四個效果代碼到此結束。希望能幫到有需要的朋友。如果有問題可以在下面留言。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn