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

首頁 > 語言 > JavaScript > 正文

用隊列模擬jquery的動畫算法實例

2024-05-06 16:14:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了用隊列模擬jquery的動畫算法,實例分析了用隊列模擬jquery的動畫算法的原理與實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了用隊列模擬jquery的動畫算法。分享給大家供大家參考。具體分析如下:

Aaron最近瘋狂的愛上了算法研究,估計又要死傷不少腦細胞了,我喜歡撿現成的,可以省些力氣。發現他寫的一段源碼,運行一下,還蠻好玩的,于是拿來分析一下,一來吸收下里邊的營養,二來加深一下源碼學習的功力。話說這源碼還真是提高js內功的一大秘決,不信,就和我一起來品味一下吧。

 

復制代碼代碼如下:
//立即執行函數,沒有什么好說的。看下面演示
/**
(function($){
    //此處的$會由后面緊跟的立即執行函數的返回值提供
})(function(){
    //這個函數運行的結果就是$啦
    return aQuery
}())   

 

*/
(function($) {
    window.$ = $;
})(function() {

    //用來匹配ID字符串
    //(?:表示這里不分組) ,參考正則的內容
    //不過我個人認為把*改成+號會更好,因為#后至少要一個字符吧
    var rquickExpr = /^(?:#([/w-]*))$/;
    //一看便是jquery的重度患者
    function aQuery(selector) {
        return new aQuery.fn.init(selector);
    }

    /**
     * 動畫 
     * @return {[type]} [description]
     */
    var animation = function() {

        var self = {};
        var Queue = []; //動畫隊列
        var fireing = false //動畫鎖
        var first = true; //通過add接口觸發

        var getStyle = function(obj, attr) {
            return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr];
        }
        //這里邊都是具體的動畫效果,沒有什么難懂的
        var makeAnim = function(element, options, func) {
            var width = options.width
                //包裝了具體的執行算法
                //css3
                //setTimeout
            element.style.webkitTransitionDuration = '2000ms';
            element.style.webkitTransform = 'translate3d(' + width + 'px,0,0)';

            //監聽動畫完結
            element.addEventListener('webkitTransitionEnd', function() {
                func()
            });
        }

        var _fire = function() {
            //加入動畫正在觸發
            if (!fireing) {
                var onceRun = Queue.shift();
                if (onceRun) {
                    //防止重復觸發
                    fireing = true;
                    //next
                    onceRun(function() {
                        fireing = false;
                        //這里很巧妙的產生了連環調用的效果
                        _fire();
                    });
                } else {
                    fireing = true;
                }
            }
        }

        return self = {
            //增加隊列
            add: function(element, options) {
                //這里是整個算法的關鍵
                //相當于往數組中添加一個函數
                //[function(func){},...]
                //也就是_fire中的onceRun方法,func也就是在那時傳進去的。
                //在Aaron的編程中很喜歡用這種技巧,比如預編譯什么的。
                Queue.push(function(func) {
                    makeAnim(element, options, func);
                });

                //如果有一個隊列立刻觸發動畫
                if (first && Queue.length) {
                    //這個開關很好的起到了控制后面添加的元素進行排隊的作用
                    first = false;
                    //這里等價于直接運行_fire();
                    //Aaron喜歡裝A,故意添加一個self.fire出來,或許他是深謀遠慮
                    self.fire();
                }
            },
            //觸發
            fire: function() {
                _fire();
            }
        }
    }();

    aQuery.fn = aQuery.prototype = {
        run: function(options) {
            animation.add(this.element, options);
            return this;
        }
    }

    var init = aQuery.fn.init = function(selector) {
        var match = rquickExpr.exec(selector);
        var element = document.getElementById(match[1])
        this.element = element;
        return this;
    }
    //差點小看了這一行代碼
    //jquery的樣子學的不錯
    //直接aQuery.fn.init = aQuery.fn不是更好?
    //多一個init變量無非是想減少查詢罷了,優化的思想無處不在。
    init.prototype = aQuery.fn;
    return aQuery;
}());

//dom
var oDiv = document.getElementById('div1');
 
//調用
oDiv.onclick = function() {

    $('#div1').run({
        'width': '500'
    }).run({
        'width': '300'
    }).run({
        'width': '1000'
    });
};

 

附上html就可以自己調式了。要記得用chrome瀏覽哦。

復制代碼代碼如下:
<div id="div1" style="width:100px;height:50px;background:red;cursor:pointer;color:#fff;text-align:center;line-height:50px;" data-mce-style="width: 100px; height: 50px; background: red; cursor: pointer; color: #fff; text-align: center; line-height: 50px;">點擊</div>

 

希望本文所述對大家的jQuery程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久有精品国产| 亚洲视频一区二区三区| 欧美性xxxxhd| 久久精品国产一区二区三区| 国产91对白在线播放| 欧美在线观看视频| 亚洲欧美日韩高清| 亚洲日本aⅴ片在线观看香蕉| 国产成人一区二区三区电影| 日韩极品精品视频免费观看| 国产精品久久久久免费a∨| 欧美激情一区二区久久久| 日韩av中文字幕在线免费观看| 97久久久免费福利网址| 国产在线观看一区二区三区| 日韩专区在线播放| 97超级碰在线看视频免费在线看| 亚洲影院色无极综合| 91国产精品视频在线| 亚洲欧美日韩国产中文专区| 97av在线影院| 欧美精品成人91久久久久久久| 欧美日韩国产成人高清视频| 亚洲精品中文字幕女同| 免费99精品国产自在在线| 成人国产精品av| 中文字幕日韩专区| 国产精品午夜一区二区欲梦| 日韩精品免费视频| 国产福利视频一区| 欧美福利视频在线观看| 欧美激情欧美激情在线五月| 久久频这里精品99香蕉| 日韩经典中文字幕| 大伊人狠狠躁夜夜躁av一区| 色偷偷噜噜噜亚洲男人| 日韩免费看的电影电视剧大全| 粉嫩av一区二区三区免费野| 亚洲男女自偷自拍图片另类| 亚洲午夜av电影| 精品亚洲va在线va天堂资源站| 色综久久综合桃花网| 亚洲欧美成人网| 亚洲色图校园春色| 日韩中文字幕在线视频播放| 午夜免费在线观看精品视频| 69影院欧美专区视频| 日av在线播放中文不卡| 性欧美长视频免费观看不卡| 91麻豆国产精品| 欧美激情久久久久久| 国产精品一久久香蕉国产线看观看| 久久国产精品视频| 正在播放国产一区| 亚洲精品美女网站| 亚洲精选中文字幕| 91精品国产综合久久香蕉的用户体验| 日韩中文字幕在线精品| 国产不卡精品视男人的天堂| 精品久久久国产| 亚洲国产欧美精品| 亚洲视频在线播放| 亚洲最大av在线| 国产福利精品在线| 91国偷自产一区二区三区的观看方式| 欧美性猛交xxxx偷拍洗澡| 久久99久国产精品黄毛片入口| 久久久999精品| 国产精品9999| 隔壁老王国产在线精品| 日韩中文字幕第一页| 亚洲乱码一区av黑人高潮| 亚洲自拍偷拍一区| 91日本在线观看| 一区二区三区在线播放欧美| 97在线视频免费| 全球成人中文在线| 欧美亚州一区二区三区| 青青精品视频播放| 国产91在线高潮白浆在线观看| 成人国产精品久久久| 欧美国产中文字幕| 日韩中文av在线| 热久久99这里有精品| 国产精品亚洲第一区| 最好看的2019年中文视频| 免费不卡欧美自拍视频| 91色在线观看| 欧美野外猛男的大粗鳮| 亚洲成人黄色在线| 97在线看免费观看视频在线观看| 欧美激情中文字幕乱码免费| 久久久噜噜噜久噜久久| 亚洲嫩模很污视频| 日韩男女性生活视频| 欧美激情视频一区| 国产99在线|中文| 亚洲丁香婷深爱综合| 亚洲国产美女久久久久| 亚洲免费视频一区二区| 精品国产乱码久久久久久虫虫漫画| 日韩电影中文字幕av| 亚洲欧美制服综合另类| 亚洲一级黄色片| 午夜免费久久久久| 欧美日韩国产激情| 欧美另类高清videos| 日韩在线视频国产| 国产欧美一区二区三区在线看| 欧美视频中文在线看| 少妇精69xxtheporn| 欧美最猛性xxxxx免费| 欧洲s码亚洲m码精品一区| 午夜精品三级视频福利| 国产精品福利无圣光在线一区| 在线视频亚洲欧美| 黑人狂躁日本妞一区二区三区| 激情成人中文字幕| 久久久久久久色| 九九精品视频在线观看| 庆余年2免费日韩剧观看大牛| 亚洲精品国产电影| 久久久精品视频在线观看| …久久精品99久久香蕉国产| 国产精品高潮呻吟久久av无限| 狠狠躁夜夜躁人人爽超碰91| 国产精品电影久久久久电影网| 色天天综合狠狠色| 最近2019免费中文字幕视频三| 国产精品自产拍在线观| 国产精品色午夜在线观看| 欧美精品久久久久a| 国产免费观看久久黄| 亚洲国产精品人久久电影| 亚洲国产精品国自产拍av秋霞| 欧美高清自拍一区| 欧美精品在线免费观看| 姬川优奈aav一区二区| 成人久久一区二区三区| 国产suv精品一区二区| 国产精品日日摸夜夜添夜夜av| 九九热精品视频在线播放| 欧美性xxxxxxxxx| 亚洲精品久久久久久下一站| 91成品人片a无限观看| 国产一区二区三区在线免费观看| 日韩在线视频线视频免费网站| 久久久中精品2020中文| 久久视频精品在线| 日韩av一区二区在线观看| 91精品国产综合久久香蕉最新版| 亚洲欧美日韩国产中文| 亚洲桃花岛网站| 欧美在线视频a| 亚洲精品美女久久| 国产成人精品999| 国产精品欧美一区二区三区奶水| 7m精品福利视频导航| 亚洲国产一区二区三区在线观看| 久久久久久久久久国产| 久久福利视频网| 91精品国产自产91精品| 少妇高潮久久77777| 成人免费看吃奶视频网站|