国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在包含圖片的頁(yè)面中正確使用iScroll

zhangke3016 / 2509人閱讀

摘要:背景初始化依賴的高度計(jì)算,必須等完全渲染好后才能使用。最近項(xiàng)目中有個(gè)頁(yè)面需要使用但是這個(gè)頁(yè)面中包含許多圖片,并且圖片的高度是不定的,如果后就去初始化肯定是有問(wèn)題的因?yàn)閳D片可能還沒(méi)全部顯示,高度還沒(méi)完全確定。

背景

iScroll初始化依賴DOM的高度計(jì)算,必須等DOM完全渲染好后才能使用iScroll。最近項(xiàng)目中有個(gè)頁(yè)面需要使用iScroll,但是這個(gè)頁(yè)面中包含許多圖片,并且圖片的高度是不定的,如果DOM ready后就去初始化iScroll肯定是有問(wèn)題的(因?yàn)閳D片可能還沒(méi)全部顯示,DOM高度還沒(méi)完全確定)。必須等所有圖片加載完才初始化iScroll。

解決方案

知道問(wèn)題所在之后接著就去找解決方案了,千萬(wàn)不要使用setTimeout設(shè)置個(gè)延時(shí),然后才去初始化iScroll。

PS:項(xiàng)目中已經(jīng)使用了zepto的Defered,underscore

// util.js 加載圖片
function loadImg(src) {
    var deferred = Deferred(), // zeptojs Deferred
        img = new Image();
     img.src = src;
     // 圖片加載完就resolve,不care是否成功
     img.onload = complete;
     img.onerror = complete;
     img.onabort = complete;
     function complete() {
         deferred.resolve();
     }
    
    return deferred.promise();
}

// 實(shí)現(xiàn)個(gè)簡(jiǎn)單的圖片加載完再初始化iScroll函數(shù)
function lazyInitIScroll(wrap) {
    var $wrap = _.isString(wrap) ? $(wrap): wrap, // zeptojs
        $imgs = $wrap.find("img"),
        imgPromises = _.map($imgs, function(img){ // underscore
            return loadImg(img.src);// 調(diào)用loadImg方法
        });
    // 強(qiáng)化下,如果沒(méi)有圖片,也得兼容
    if(imgPromises.length === 0) {
        imgPromises.push(function(){
            var deferred = Deferred(); // zeptojs Deferred
            deferred.resolve();
            return deferred.promise();
        })
    }
    $.when.apply(null, imgPromises).then(function(){
        new IScroll($wrap[0]); // 圖片加載完了再初始化iScroll
    });
}

OK,就這樣。如果想返回初始化的iScroll對(duì)象,則可以改進(jìn)下lazyInitIScroll函數(shù):

// 實(shí)現(xiàn)個(gè)簡(jiǎn)單的圖片加載完再初始化iScroll函數(shù)V2
function lazyInitIScroll(wrap) {
    var deferred = Deferred(),
        $wrap = _.isString(wrap) ? $(wrap): wrap, // zeptojs
        $imgs = $wrap.find("img"),
        imgPromises = _.map($imgs, function(img){ // underscore
            return loadImg(img.src);// 調(diào)用loadImg方法
        });
    // 強(qiáng)化下,如果沒(méi)有圖片,也得兼容
    if(imgPromises.length === 0) {
        imgPromises.push(function(){
            var deferred = Deferred(); // zeptojs Deferred
            deferred.resolve();
            return deferred.promise();
        })
    }
    $.when.apply(null, imgPromises).then(function(){
        deferred.resolve(new IScroll($wrap[0]));// 圖片加載完了再初始化iScroll
    });
    return deferred.promise();
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/83852.html

相關(guān)文章

  • 包含圖片頁(yè)面正確使用iScroll

    摘要:背景初始化依賴的高度計(jì)算,必須等完全渲染好后才能使用。最近項(xiàng)目中有個(gè)頁(yè)面需要使用但是這個(gè)頁(yè)面中包含許多圖片,并且圖片的高度是不定的,如果后就去初始化肯定是有問(wèn)題的因?yàn)閳D片可能還沒(méi)全部顯示,高度還沒(méi)完全確定。 背景 iScroll初始化依賴DOM的高度計(jì)算,必須等DOM完全渲染好后才能使用iScroll。最近項(xiàng)目中有個(gè)頁(yè)面需要使用iScroll,但是這個(gè)頁(yè)面中包含許多圖片,并且圖片的高度...

    RancherLabs 評(píng)論0 收藏0
  • JS進(jìn)階篇--iscroll.js使用

    摘要:最好給瀏覽器或者毫秒的間隙再去初始化。他們控制滾動(dòng)周期毫秒級(jí)別和動(dòng)畫的擦除效果。重新繪制階段不是瞬時(shí)發(fā)生的只是范圍結(jié)束時(shí)觸發(fā)。注如果你有一個(gè)相當(dāng)復(fù)雜的結(jié)構(gòu),你應(yīng)該給瀏覽器更多的執(zhí)行事件,可以設(shè)置到毫秒的超時(shí)時(shí)間。使用方法注冊(cè)事件。 入門 Scroll是一個(gè)類,每個(gè)需要使用滾動(dòng)功能的區(qū)域均要進(jìn)行初始化。每個(gè)頁(yè)面上的iScroll實(shí)例數(shù)目在設(shè)備的CPU和內(nèi)存能承受的范圍內(nèi)是沒(méi)有限制的。 盡...

    Genng 評(píng)論0 收藏0
  • 使用iscroll4可能會(huì)遇到問(wèn)題(轉(zhuǎn):記錄)

    摘要:只針對(duì),因?yàn)榈臅簳r(shí)還不支持,會(huì)自動(dòng)選擇不用。原因還是和問(wèn)題一樣的,因?yàn)槠帘瘟四J(rèn)事件。在技術(shù)上解決不了的問(wèn)題,我認(rèn)為還是多和產(chǎn)品和溝通比較好,共同協(xié)商一個(gè)良好的方案。 1.在iscroll4的滾動(dòng)容器范圍內(nèi),點(diǎn)擊input框、select等表單元素時(shí)沒(méi)有響應(yīng)這個(gè)問(wèn)題原因在于iscroll需要一直監(jiān)聽用戶的touch操作,以便靈敏的做出對(duì)應(yīng)效果,所以它把其余的默認(rèn)事件屏蔽了,解決的方法是...

    keelii 評(píng)論0 收藏0
  • 使用iscroll4可能會(huì)遇到問(wèn)題(轉(zhuǎn):記錄)

    摘要:只針對(duì),因?yàn)榈臅簳r(shí)還不支持,會(huì)自動(dòng)選擇不用。原因還是和問(wèn)題一樣的,因?yàn)槠帘瘟四J(rèn)事件。在技術(shù)上解決不了的問(wèn)題,我認(rèn)為還是多和產(chǎn)品和溝通比較好,共同協(xié)商一個(gè)良好的方案。 1.在iscroll4的滾動(dòng)容器范圍內(nèi),點(diǎn)擊input框、select等表單元素時(shí)沒(méi)有響應(yīng)這個(gè)問(wèn)題原因在于iscroll需要一直監(jiān)聽用戶的touch操作,以便靈敏的做出對(duì)應(yīng)效果,所以它把其余的默認(rèn)事件屏蔽了,解決的方法是...

    褰辯話 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<