javascript 下雪效果 特效详解编程语言

<html> 
<head> 
<script type="text/javascript"> 
(function() { 
	function j(a, b, c) { 
		if (a.addEventListener) a.addEventListener(b, c, false); 
		else a.attachEvent && a.attachEvent("on" + b, c) 
	} 
	function f(a) { 
		if (typeof window.onload != "function") window.onload = a; 
		else { 
			var b = window.onload; 
			window.onload = function() { 
				b(); 
				a() 
			} 
		} 
	} 
	function g() { 
		var a = {}; 
		for (type in { 
			Top: "", 
			Left: "" 
		}) { 
			var b = type == "Top" ? "Y": "X"; 
			if (typeof window["page" + b + "Offset"] != "undefined") a[type.toLowerCase()] = window["page" + b + "Offset"]; 
			else { 
				b = document.documentElement.clientHeight ? document.documentElement: document.body; 
				a[type.toLowerCase()] = b["scroll" + type] 
			} 
		} 
		return a 
	} 
	function k() { 
		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 h(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 = g().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 i = false; 
	f(function() { 
		i = true 
	}); 
	window.createSnow = function(a, b) { 
		if (i) { 
			var c = []; 
			setInterval(function() { 
				b > c.length && Math.random() < b * 0.0025 && c.push(new h(a)); 
				for (var e = g().top, l = k(), d = c.length - 1; d >= 0; d--) if (c[d]) if (c[d].top < e || c[d].top > e + l) { 
					c[d].remove(); 
					c.splice(d, 1) 
				} else { 
					c[d].move(); 
					c[d].draw() 
				} 
			}, 
			40); 
			j(window, "scroll", 
			function() { 
				for (var e = c.length - 1; e >= 0; e--) c[e].draw() 
			}) 
		} else f(function() { 
			createSnow(a, b) 
		}) 
	}; 
	h.prototype = { 
		createEl: function(a, b) { 
			this.el = document.createElement("img"); 
			this.el.setAttribute("src", b + "snow" + Math.floor(Math.random() * 4) + ".gif"); 
			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.top < 0) this.top = this.maxTop; 
			else if (this.top > this.maxTop) this.top = 0; 
			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) 
		} 
	} 
})(); 
</script> 
</head> 
 
<body bgcolor="#999999"> 
<script> 
//使用方法 
createSnow('...........', 60);//修改为自己的雪花图片存放目录,文件形式为snow1.gif  snow2.gif ...... 
</script> 
</body> 
</html> 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9999.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论