OO 의 애니메이션 추가 플러그 인 을 기반 으로 점프,그 라 데 이 션 등 애니메이션 효과 공 유 를 실현 할 수 있 습 니 다.

앞에서 말 했 듯 이 얼마 동안 바 빴 지만 오 랜 만 에 글 을 쓰 지 못 했 습 니 다.최근 에 손 에 있 는 일 은 마침 단락 을 지 었 습 니 다.예전 에 빈 글 쓰기 플러그 인 을 모두 꺼 내 서 공유 하 세 요.여러분 에 게 도움 이 되 었 으 면 좋 겠 습 니 다.고수 가 제 글 쓰기 부족 과 오 류 를 지적 해 주 셨 으 면 좋 겠 습 니 다.지금까지 제 가 쓴 것 은 모두 사용 하고 있 습 니 다.성능 에 있어 서 개인 은 가능 한 한 문제 에 접근 할 수 밖 에 없다.플러그 인 소개:그 라 데 이 션 등 애니메이션 효 과 를 실행 할 수 있 습 니 다.이 플러그 인 은 추가 플러그 인 으로 앞 에 제 가 보 낸 팝 업 층 등 과 같은 것 에 맞 춰 js 가 보 여 주 는 재 미 를 증가 시 킬 수 있 습 니 다.사용 방법:아래 의 js 코드 에 앞 에 썼 습 니 다.보 셔 도 됩 니 다.바로 복사 해서 붙 여 넣 으 시 면 됩 니 다.문제 가 있 으 면 연락 주세요.
/*
 createByTommy_20110525
 emial:@[email protected]
  :
 
  :
 1、 ID;
 2、 :
 1)、sty-> , ( style scrollTop )
 2)、curClass-> ,
 3)、maxVal-> , 0( curClass style ),
 4)、effect-> outQuad, 2
 3、
 */

//animation
var ani = function(){this.init.apply(this,arguments)}
ani.prototype = {
    _id:function(i){
        if(!i) return;
        return typeof i != "string" && i.nodeType === 1 ? i : document.getElementById(i);
    },
    init:function(e,s,callback){
        this.e = this._id(e);
        this.setInit(s||{});
        var maxS = parseInt(this.s.maxVal),speed = maxS==0?Math.max(this.getSty(this.e,this.s.sty),1):maxS/5;
        this.fun(speed,maxS,callback)
    },
    formula:function(x){
        var f;
        switch(this.s.effect){
            case 0:
                f = "outQuad";
                break;
            case 1:
                f = "inQuad";
                break;
            case 2:
                f = "bounce";
                break;
            default:
                f = "easeInBack";
        }
        this.tween ={
            outQuad:function(pos){return Math.pow(pos, 2)},//outQuad
            inQuad:function(pos){return -(Math.pow((pos-1),2)-1)},//inQuad
            bounce:function(pos){//bounce
                if (pos < (1 / 2.75)) {
                    return (7.5625 * pos * pos);
                } else if (pos < (2 / 2.75)) {
                    return (7.5625 * (pos -= (1.5 / 2.75)) * pos + .75);
                } else if (pos < (2.5 / 2.75)) {
                    return (7.5625 * (pos -= (2.25 / 2.75)) * pos + .9375);
                } else {
                    return (7.5625 * (pos -= (2.625 / 2.75)) * pos + .984375);
                }
            },
            easeInBack:function(pos){var s = 1.70158;return (pos) * pos * ((s + 1) * pos - s);}
        };
        return this.tween[f](x);
    },
    findAry:function(attr){
        var rg = ["width","height","top","bottom","left","right","margin","padding"];
        for(var z in rg){
            if(rg[z]==attr) return true;
        }
        return false;
    },
    setInit:function(s){
        this.s = {
            sty:"width",
            curClass:"",
            maxVal:0,//
            effect:1//
        }
        for(i in s) this.s[i] = s[i];
    },
    setSty:function(x){
        var attr = this.s.sty;
        if(this.findAry(attr)){
            this.e.style[attr] = x + 'px';
            var isIE6 = navigator.appVersion.indexOf("MSIE 6")>-1;
            isIE6&&attr=="top"&&(this.e.style[attr] = x + document.documentElement.scrollTop + 'px');
        }else if(attr=="opacity"){
            this.s.maxVal===1&&(this.e.style.display = "block");
            this.e.style.opacity = x;
            this.e.style.filter = "alpha(opacity="+x*100+")";
        }else{
            this.e[this.s.sty] = x
        }
    },
    getSty:function(e,s){
        var val = e.currentStyle?e.currentStyle[s]:document.defaultView.getComputedStyle(e,null)[s];
        return parseInt(val)||0;
    },
    fun:function(f,m,callback){
        var D = Date,t = new D,e,T = 500,_this = this;
        return e = setInterval(function() {
            var z = Math.min(1, (new D - t) / T),
                c = _this.s.curClass,
                curC = _this.e.className;
            _this.setSty( + f + (m - f) * _this.formula(z));
            if (z == 1) {
                if (callback && typeof callback == 'function') callback();
                _this.s.maxVal==0&&(_this.e.getAttribute("style"))&&(_this.e.style.display="none");
                if(c!=""&&curC.indexOf(c)<0)_this.e.className += c;
                clearInterval(e);
            }
        },10);
    }
}
을 볼 수 있 습 니 다.
이것 은 이 js 가 보 여 준 첫 번 째 데모 1:[html]

<!DOCTYPE HTML>
<html>
<head>
<meta charset="gbk">
<title>test</title>
<style>
    div,h6,body{padding:0;margin:0;}
        div,h6{font:bold 12px/24px 'Tahoma';text-indent:15px;}
    .car-mod{position:relative;width:200px;}
        .car-menu{width:200px;background:#c06;cursor:pointer;color:#fff;}
        .car-box{border:2px solid #c06;width:300px;display:none;}
        .car-box h6{background-color:#f5f5f5;background-image:-moz-linear-gradient(#f5f5f5,#fff);}
        .things{border-top:1px solid #ccc;padding:50px 15px;}
</style>
</head>

<body>
    <div class="car-mod" id="J_car_mod">

    <div class="car-menu"> </div>

    <div class="car-box" id="J_car_box">
      <h6> </h6>
      <div class="things"></div>
    </div>

    </div>
<script src="animation.source.js"></script>
<script>
    (function(){
        // animation.js
        var D = document,carMod = D.getElementById("J_car_mod"),carBox = D.getElementById("J_car_box"),carControl=true;
        //
        carMod.onmouseover = function(even){
            var even = even || window.event,target = even.target || even.srcElement;
            if(target.className=="car-menu"){
                !!carControl&&(carObj = new ani(carBox,{maxVal:1,sty:"opacity"},function(){carControl=false;}));
                carObj = null;
            }
            //
            this.onmouseout = function(even){
                var e = even || window.event,
                        reltg =  e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
                while (reltg && reltg != this){reltg = reltg.parentNode;}        
                if(reltg != this){
                    !carControl&&(carObj1 = new ani(carBox,{maxVal:0,sty:"opacity"},function(){carControl=true;}));
                    carObj1 = null;
                }
            }
        }

    })()
</script>
</body>
</html>
이것 은 앞의 팝 업 층 의 demo 버 전의 효 과 를 바탕 으로 합 니 다.이 효 과 는 앞의 팝 업 층 의 js 를 복사 해 야 합 니 다.일부 코드 는 다음 과 같 습 니 다[html]

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title> </title>
<style>
    div{padding:0;margin:0;}
    .wra{margin:0 auto;width:1000px;overflow:hidden;}
    .menu{border:1px solid #ccc;background:#000;color:#fff;width:250px;height:30px;font:14px/30px ' ';text-align:center;text-shadow:1px 1px 2px #f5f5f5;cursor:pointer;}
    .con{border:1px solid #000;background:#fff;padding:30px;width:500px;height:200px;position:fixed;top:-150%;left:50%;margin:-100px 0 0 -250px;display:none;z-index:999;}
    .close{display:block;position:absolute;right:10px;top:10px;cursor:pointer;font:bold 14px Arial;-moz-transition:-moz-transform .5s ease-in 0s;}
    .close:hover{-moz-transform:rotate(360deg);}
</style>
<style>
</style>
</head>

<body>
<div class="wra">
    <div id="J_popup" class="menu"> </div>

    <div id="J_popup_con" class="con">
    <span id="J_colse" class="close" title=" ">X</span>
       
  </div>
  <script src="popup.js"></script>
  <script src="animation.source.js"></script>
  <script>
        var D = document,m = D.getElementById("J_popup"),con = D.getElementById("J_popup_con"),cl = D.getElementById("J_colse");
        new Popup(m,con,cl,{addFun:function(){new ani("J_popup_con",{sty:"top",maxVal:"350",effect:2})},callBack:function(){con.style.display="block";new ani("J_popup_con",{sty:"top",maxVal:"0"})}})
    </script>
</div>
</body>
</html>

좋은 웹페이지 즐겨찾기