javascript 下雪效果 特效

gwf6 9年前發布 | 5K 次閱讀 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> </pre>

 本文由用戶 gwf6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!