一、下雪特效代码①
1 <script type="text/javascript">
2 (function($){
3 $.fn.snow = function(options){
4 var $flake = $('<div id="snowbox" />').css({'position': 'absolute','z-index':'9999', 'top': '-50px', 'cursor': 'pointer'}).html('❄'),
5 documentHeight = $(document).height(),
6 documentWidth = $(document).width(),
7 defaults = {
8 minSize : 10,
9 maxSize : 20,
10 newOn : 1000,
11 flakeColor : "#AFDAEF" /* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF */
12 },
13 options = $.extend({}, defaults, options);
14 var interval= setInterval( function(){
15 var startPositionLeft = Math.random() * documentWidth - 100,
16 startOpacity = 0.5 Math.random(),
17 sizeFlake = options.minSize Math.random() * options.maxSize,
18 endPositionTop = documentHeight - 200,
19 endPositionLeft = startPositionLeft - 500 Math.random() * 500,
20 durationFall = documentHeight * 10 Math.random() * 5000;
21 $flake.clone().appendTo('body').css({
22 left: startPositionLeft,
23 opacity: startOpacity,
24 'font-size': sizeFlake,
25 color: options.flakeColor
26 }).animate({
27 top: endPositionTop,
28 left: endPositionLeft,
29 opacity: 0.2
30 },durationFall,'linear',function(){
31 $(this).remove()
32 });
33 }, options.newOn);
34 };
35 })(jQuery);
36 $(function(){
37 $.fn.snow({
38 minSize: 5, /* 定义雪花最小尺寸 */
39 maxSize: 50,/* 定义雪花最大尺寸 */
40 newOn: 300 /* 定义密集程度,数字越小越密集 */
41 });
42 });
43 </script>
二、下雪特效代码②
1 <script type="text/javascript">
2 /* 控制下雪 */
3 function snowFall(snow) {
4 /* 可配置属性 */
5 snow = snow || {};
6 this.maxFlake = snow.maxFlake || 200; /* 最多片数 */
7 this.flakeSize = snow.flakeSize || 10; /* 雪花形状 */
8 this.fallSpeed = snow.fallSpeed || 1; /* 坠落速度 */
9 }
10 /* 兼容写法 */
11 requestAnimationFrame = window.requestAnimationFrame ||
12 window.mozRequestAnimationFrame ||
13 window.webkitRequestAnimationFrame ||
14 window.msRequestAnimationFrame ||
15 window.oRequestAnimationFrame ||
16 function(callback) { setTimeout(callback, 1000 / 60); };
17
18 cancelAnimationFrame = window.cancelAnimationFrame ||
19 window.mozCancelAnimationFrame ||
20 window.webkitCancelAnimationFrame ||
21 window.msCancelAnimationFrame ||
22 window.oCancelAnimationFrame;
23 /* 开始下雪 */
24 snowFall.prototype.start = function(){
25 /* 创建画布 */
26 snowCanvas.apply(this);
27 /* 创建雪花形状 */
28 createFlakes.apply(this);
29 /* 画雪 */
30 drawSnow.apply(this)
31 }
32 /* 创建画布 */
33 function snowCanvas() {
34 /* 添加Dom结点 */
35 var snowcanvas = document.createElement("canvas");
36 snowcanvas.id = "snowfall";
37 snowcanvas.width = window.innerWidth;
38 snowcanvas.height = document.body.clientHeight;
39 snowcanvas.setAttribute("style", "position:absolute; top: 0; left: 0; z-index: 1; pointer-events: none;");
40 document.getElementsByTagName("body")[0].appendChild(snowcanvas);
41 this.canvas = snowcanvas;
42 this.ctx = snowcanvas.getContext("2d");
43 /* 窗口大小改变的处理 */
44 window.onresize = function() {
45 snowcanvas.width = window.innerWidth;
46 /* snowcanvas.height = window.innerHeight */
47 }
48 }
49 /* 雪运动对象 */
50 function flakeMove(canvasWidth, canvasHeight, flakeSize, fallSpeed) {
51 this.x = Math.floor(Math.random() * canvasWidth); /* x坐标 */
52 this.y = Math.floor(Math.random() * canvasHeight); /* y坐标 */
53 this.size = Math.random() * flakeSize 2; /* 形状 */
54 this.maxSize = flakeSize; /* 最大形状 */
55 this.speed = Math.random() * 1 fallSpeed; /* 坠落速度 */
56 this.fallSpeed = fallSpeed; /* 坠落速度 */
57 this.velY = this.speed; /* Y方向速度 */
58 this.velX = 0; /* X方向速度 */
59 this.stepSize = Math.random() / 30; /* 步长 */
60 this.step = 0 /* 步数 */
61 }
62 flakeMove.prototype.update = function() {
63 var x = this.x,
64 y = this.y;
65 /* 左右摆动(余弦) */
66 this.velX *= 0.98;
67 if (this.velY <= this.speed) {
68 this.velY = this.speed
69 }
70 this.velX = Math.cos(this.step = .05) * this.stepSize;
71
72 this.y = this.velY;
73 this.x = this.velX;
74 /* 飞出边界的处理 */
75 if (this.x >= canvas.width || this.x <= 0 || this.y >= canvas.height || this.y <= 0) {
76 this.reset(canvas.width, canvas.height)
77 }
78 };
79 /* 飞出边界-放置最顶端继续坠落 */
80 flakeMove.prototype.reset = function(width, height) {
81 this.x = Math.floor(Math.random() * width);
82 this.y = 0;
83 this.size = Math.random() * this.maxSize 2;
84 this.speed = Math.random() * 1 this.fallSpeed;
85 this.velY = this.speed;
86 this.velX = 0;
87 };
88 // 渲染雪花-随机形状(此处可修改雪花颜色!!!)
89 flakeMove.prototype.render = function(ctx) {
90 var snowFlake = ctx.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.size);
91 snowFlake.addColorStop(0, "rgba(255, 255, 255, 0.9)"); /* 此处是雪花颜色,默认是白色 */
92 snowFlake.addColorStop(.5, "rgba(255, 255, 255, 0.5)"); /* 若要改为其他颜色,请自行查 */
93 snowFlake.addColorStop(1, "rgba(255, 255, 255, 0)"); /* 找16进制的RGB 颜色代码。 */
94 ctx.save();
95 ctx.fillStyle = snowFlake;
96 ctx.beginPath();
97 ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
98 ctx.fill();
99 ctx.restore();
100 };
101 /* 创建雪花-定义形状 */
102 function createFlakes() {
103 var maxFlake = this.maxFlake,
104 flakes = this.flakes = [],
105 canvas = this.canvas;
106 for (var i = 0; i < maxFlake; i ) {
107 flakes.push(new flakeMove(canvas.width, canvas.height, this.flakeSize, this.fallSpeed))
108 }
109 }
110 /* 画雪 */
111 function drawSnow() {
112 var maxFlake = this.maxFlake,
113 flakes = this.flakes;
114 ctx = this.ctx, canvas = this.canvas, that = this;
115 /* 清空雪花 */
116 ctx.clearRect(0, 0, canvas.width, canvas.height);
117 for (var e = 0; e < maxFlake; e ) {
118 flakes[e].update();
119 flakes[e].render(ctx);
120 }
121 /* 一帧一帧的画 */
122 this.loop = requestAnimationFrame(function() {
123 drawSnow.apply(that);
124 });
125 }
126 /* 调用及控制方法 */
127 var snow = new snowFall({maxFlake:60});
128 snow.start();
129 </script>
三、下雪特效代码③
<script type="text/javascript">
window.onload = function () {
var minSize = 5; //最小字体
var maxSize = 50;//最大字体
var newOne = 100; //生成雪花间隔
var flakColor = "#fff"; //雪花颜色
var flak = $("<div></div>").css({position:"absolute","top":"0px"}).html("❉");//定义一个雪花
var dhight = $(window).height(); //定义视图高度
var dw =$(window).width()-80; //定义视图宽度
setInterval(function(){
var sizeflak = minSize Math.random()*maxSize; //产生大小不等的雪花
var startLeft = Math.random()*dw; //雪花生成是随机的left值
var startOpacity = 0.7 Math.random()*0.3; //随机透明度
var endTop= dhight-100; //雪花停止top的位置
var endLeft= Math.random()*dw; //雪花停止的left位置
var durationfull = 5000 Math.random()*5000; //雪花飘落速度不同
flak.clone().appendTo($("body")).css({
"left":startLeft ,
"opacity":startOpacity,
"font-size":sizeflak,
"color":flakColor
}).animate({
"top":endTop,
"left":endLeft,
"apacity":0.1
},durationfull,function(){
$(this).remove()
});
},newOne);
}
</script>
使用方法:
方法①、复制其中一种JS代码,粘贴到网站</body>标签之前即可;
方法②、去掉代码前后的<script **>标签,然后将代码保存为js文件,最后在网站引用即可。
方法③、直接在html页面中引用即可。
Ps:若没效果,请确认网页是否已载入JQurey,如果没有请在下雪代码之前引入JQ即可。
载入jquery
1 <script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.js"></script>
2 <script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
更多专业前端知识,请上 【猿2048】www.mk2048.com