亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

基于OO的動畫附加插件,可以實現彈跳、漸隱等動畫效果 分享

2019-11-20 22:37:29
字體:
來源:轉載
供稿:網友

前言:前段時間一直都好忙也就好久沒有寫些東西了,最近手上的事剛好告些段落了,把以前空寫的寫插件都拿出來分享下吧,希望對大家有些幫助,也希望有高手能幫忙指點下我的寫不足和錯誤,一直以來自己寫的東西都是在用,性能方面個人只能盡量靠近問題還很多……真心求指點;
插件簡介:執行漸隱等動畫效果,可以這個插件為一個附加插件 可以配合前面我發的一個彈出層 等等之類的東西用增加js展示的趣味性,
使用方法:在下面的js代碼里面前面寫了,大家可以看看直接復制粘貼就可以用了有問題可以聯系我</p
JS代碼如下 展示方式可以復制下面的HTML查看
[javascript]

復制代碼 代碼如下:

/*
 createByTommy_20110525
 emial:@csslife@163.com
 用途:
 執行漸隱等動畫效果
 傳入參數說明:
 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展示的第一個DEMO1:
[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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性日韩精品一区二区| 欧美一区三区三区高中清蜜桃| 美女扒开尿口让男人操亚洲视频网站| 亚洲二区在线播放视频| 成人黄色生活片| 中文字幕在线视频日韩| 日韩av一区在线观看| 欧美在线视频一区二区| 亚洲欧美日韩久久久久久| 成人欧美一区二区三区在线湿哒哒| 欧美人交a欧美精品| 久久乐国产精品| 亚洲精品小视频在线观看| 美女久久久久久久久久久| 成人精品在线观看| 亚洲一区二区三区四区在线播放| 久久视频中文字幕| 久久久国产精品视频| 欧美老女人在线视频| 亚洲毛片在线观看| 91精品国产777在线观看| 国产精品福利在线| 国产做受高潮69| 亚洲国产中文字幕在线观看| 欧美性69xxxx肥| 国产成人精品日本亚洲| 91热福利电影| 色哟哟网站入口亚洲精品| 欧美性色视频在线| 日韩欧美999| 日产精品久久久一区二区福利| 日韩国产高清视频在线| 亚洲xxxx做受欧美| 日韩国产欧美精品一区二区三区| 日韩在线视频网| 自拍偷拍亚洲一区| 精品久久久久久国产91| 欧美日韩不卡合集视频| 国产精品草莓在线免费观看| 亚洲美女精品成人在线视频| 久久久久久久影院| 日韩激情片免费| 精品国产自在精品国产浪潮| 欧美日韩国产中文字幕| 亚洲第一色在线| 永久免费看mv网站入口亚洲| 欧美壮男野外gaytube| 国产精品久久久久久久久粉嫩av| 欧美最猛性xxxxx免费| 国产综合视频在线观看| 日本视频久久久| 视频一区视频二区国产精品| 成人免费在线视频网址| 国产精品三级网站| 久久777国产线看观看精品| 亚洲色图五月天| 欧美日韩免费看| 日本久久久久久久久久久| 亚洲图片欧洲图片av| 欧美视频中文在线看| 精品视频—区二区三区免费| 欧美性色视频在线| 久久久久久久久久久91| 中文字幕九色91在线| 亚洲欧美国产日韩天堂区| 尤物yw午夜国产精品视频明星| 中文字幕亚洲专区| 国产一区二区久久精品| 日韩三级影视基地| 亚洲一区二区免费在线| 高清欧美一区二区三区| 亚洲裸体xxxx| 色爱精品视频一区| 久久在线视频在线| 久久久国产精品免费| 国产精品久久久久久久久久ktv| 欧美国产亚洲精品久久久8v| 亚洲天堂av在线免费| 精品国产一区久久久| 亚州成人av在线| 欧美视频在线免费| 国产九九精品视频| 亚洲欧洲高清在线| 国产精品69久久久久| 欧美大尺度激情区在线播放| 精品国产乱码久久久久久婷婷| 亚洲国产小视频在线观看| 久久久久久久久久久亚洲| 欧美日韩国内自拍| 久久久精品国产亚洲| 日韩电影中文字幕一区| 国产精品精品久久久| 91sao在线观看国产| 国产精品一香蕉国产线看观看| 在线精品视频视频中文字幕| 午夜精品久久久久久久99热| 亚洲欧美中文字幕在线一区| 亚洲精品日韩欧美| 91在线中文字幕| 日韩精品在线电影| 欧美日韩国产精品一区二区不卡中文| 欧美中文字幕在线| 国产一区av在线| 亚洲女人被黑人巨大进入| 亚洲片在线资源| 久久久免费观看视频| 欧美专区在线播放| 少妇高潮久久久久久潘金莲| 91精品中国老女人| 亚洲成人网在线| 久久精品国产亚洲一区二区| 日本一欧美一欧美一亚洲视频| 国产伦精品一区二区三区精品视频| 国语对白做受69| 欧洲美女7788成人免费视频| 欧美黄色性视频| 精品久久久久久久久久ntr影视| 国产精品久久久久av免费| 欧美日韩美女视频| 韩国精品美女www爽爽爽视频| 插插插亚洲综合网| 中文国产成人精品久久一| 久久久久久久香蕉网| 亚洲国产精品系列| 亚洲丝袜在线视频| 日韩av免费在线看| 亚洲无亚洲人成网站77777| 日本精品一区二区三区在线| 欧美精品国产精品日韩精品| 亚洲第一免费播放区| 国产大片精品免费永久看nba| 疯狂做受xxxx欧美肥白少妇| 欧美午夜影院在线视频| 亚洲激情在线视频| 丝袜一区二区三区| 国产精品一区二区av影院萌芽| 9.1国产丝袜在线观看| 97久久久久久| 欧美野外wwwxxx| 中国日韩欧美久久久久久久久| 欧美色videos| 在线精品视频视频中文字幕| 欧美精品国产精品日韩精品| 成人免费观看网址| 日韩av一区在线观看| 精品久久久香蕉免费精品视频| 日韩精品免费在线观看| 久久99久久亚洲国产| 91在线直播亚洲| 精品中文字幕在线2019| 97国产在线观看| 国产精品日韩欧美大师| 国产精品久久久一区| 中文字幕av一区中文字幕天堂| 69久久夜色精品国产7777| 狠狠色狠狠色综合日日五| 欧美在线性视频| 欧美日韩中文字幕| 欧美成人精品影院| 精品在线小视频| 国模吧一区二区三区| 成人精品一区二区三区电影免费| 日韩精品视频免费| 亚洲精品国精品久久99热|