最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jQuery 瀑布流 絕對定位布局(二)(延遲AJAX加載圖片)

 更新時間:2012年05月23日 17:40:20   作者:  
瀑布流-絕對定位布局,與浮動布局的區(qū)別在于布局不一樣,AJAX不一樣
瀑布流-絕對定位布局,與浮動布局的區(qū)別在于

1.布局不一樣:
  絕對定位:一個UL里面放置所有的絕對定位的LI;
  浮動布局:多個(一般三四個)UL分布放置LI;
2.AJAX不一樣
  絕對定位:只需要將請求來的JSON數(shù)據(jù)(當(dāng)然可以是別的格式的數(shù)據(jù)),插入到UL就可以了。然后再對這個新插入的LI進(jìn)行TOP和LEFT設(shè)置;
  浮動布置:是將請求來的JSON數(shù)據(jù)(當(dāng)然可以是別的格式的數(shù)據(jù)),分別插入到對應(yīng)的UL當(dāng)中,因?yàn)橛薪^對定位,所以不用對LI設(shè)置位置。會自動向下排列;

一、功能分析:

  1.定位每一個LI,即設(shè)置每一個LI的TOP和LEFT值;
  2.將AJAX的數(shù)據(jù),放在LI中,插入到UL當(dāng)中;

二、實(shí)現(xiàn)過程:

  1.設(shè)置LI的LEFT;
    在那一列?有了列數(shù)再乘以每個LI的寬度,就可以確定LEFT值
    找規(guī)律:
    現(xiàn)在我需要三列,那么每一列當(dāng)中的LI,都有一個共同的列號(自己設(shè)置0.1.2或者A.B.C,總之自己對這三列給一個標(biāo)識)這里設(shè)為
    0號第一列
    1號第二列
    2號第三列
    所以每一行,只能放三個LI
    第一個li 在 0號 第二個li 在 1號 第三個li 在 2號
    第四個li 在 0號 第五個li 在 1號 第六個li 在 2號
    所以想到用索引取模,正好可以得出0 1 2 ,0 1 2 ……
    通過這個我們就可以判斷LI在那一列;
    index%3 = 0 1 2 ,0 1 2 ……
    為什么要模3,因?yàn)橐贸鋈齻€數(shù)的循環(huán)。所以以后要想得出這樣的循環(huán),都可以考慮取模運(yùn)算;
  2.設(shè)置TOP的值;
    因?yàn)槊恳涣械目偢叨戎刀际遣灰粯拥摹K晕覀円O(shè)三個變量來存放不同列的高度值。
    為什么要取得這個值?
    1.初次加載的時候LI,的TOP值,是根據(jù)當(dāng)前列高度值來設(shè)置的;
2.因?yàn)锳JAX請求后的數(shù)據(jù)LI要插入到UL當(dāng)中,必需知道當(dāng)前列現(xiàn)在的總高度,然后給新的LI為它的TOP值;
其實(shí)中間有很多可以說的。但實(shí)在是太長了。我代碼中注釋也寫的很清楚了。有問題可以留言和我交流。!!
要提一點(diǎn)的就是,里面有很多相同的功能,我都寫到一個FUNCTION當(dāng)中,方便調(diào)用。例如要設(shè)LI的TOP和LEFT,要獲取LI的列數(shù),要設(shè)置列的總高度。這都是共公的,也是功能塊,所以還是單獨(dú)用函數(shù)寫出來好;
復(fù)制代碼 代碼如下:

(function($){
$.fn.extend({
waterfall:function(value){
value=$.extend({
jsonUrl:"",
dataType:"",
cloum:"",
liWidth:""
},value)
//引用包函布瀑布流的DIV對象
var $this = $(this);
//存放列的充號
var colmLeftIndex = 0;
//用來存放每一列的高度值;
var liHeight_0 = 0;
var liHeight_1 = 0;
var liHeight_2 = 0;

//設(shè)置列的序號
function getcolums(col){
colmLeftIndex = col%value.cloum;
}
//設(shè)置當(dāng)前列的高度
function getLiHeight(colIndex,hei){
switch(colIndex){
case 0:
liHeight_0 += hei
break;
case 1:
liHeight_1 += hei;
break;
case 2:
liHeight_2 += hei;
break;
}
}
//設(shè)置每一個LI的TOP和LEFT
function setLiOffset(oli,liH){
switch(colmLeftIndex){
case 0 :
oli.css({"left":value.liWidth*colmLeftIndex,"top":liHeight_0});
getLiHeight(colmLeftIndex,liH);
console.log(liHeight_0);
break;
case 1:
oli.css({"left":value.liWidth*colmLeftIndex,"top":liHeight_1});
getLiHeight(colmLeftIndex,liH);
break;
case 2:
oli.css({"left":value.liWidth*colmLeftIndex,"top":liHeight_2});
getLiHeight(colmLeftIndex,liH);
break;
}
}

//初次加載時,遍歷所有的LI,并定位每一個LI的TOP和LEFT值
$this.find("li").each(function(index, element){
//當(dāng)前LI的引用
var $liThis = $(this);
//獲得當(dāng)前LI的高度值
var liH = $liThis.outerHeight();
//獲得當(dāng)前列的序號
getcolums(index);
//把當(dāng)前LI的高度值存到相應(yīng)的列的總高度變量中
setLiOffset($liThis,liH)

});
//判斷每個UL的最后一個LI,是否進(jìn)入可視區(qū)域
function see(objLiLast){
//瀏覽器可視區(qū)域的高度
var see = document.documentElement.clientHeight;
//滾動條滑動的距離
var winScroll = $(this).scrollTop();
//每個UL的最后一個LI,距離瀏覽器頂部的
var lastLisee = objLiLast.offset().top
return lastLisee < (see+winScroll)?true:false;
}
//是否發(fā)出AJAX的“開關(guān)”;
var onOff = true;
$(window).scroll(function(){
//拖動滾條時,是否發(fā)送AJAX的一個“開關(guān)”
$this.children("ul").each(function(index, element) {
//引用當(dāng)前的UL
var ulThis = this;
//引用最后一個LI
var lastLi = $("li:last",ulThis);
//調(diào)用是否進(jìn)入可視區(qū)域函數(shù)
var isSee = see(lastLi);
if(isSee && onOff){
onOff = false;
//發(fā)送AJAX請求,載入新的圖片
$.ajax({
url:value.jsonUrl,
dataType:value.dataType,
success:function(data){
//對返回JSON里面的list數(shù)據(jù)遍歷
$.each(data.list,function(keyList,ovalue){
//對LIST里面的SRC數(shù)組遍歷,取到圖片路徑
$.each(ovalue,function(keySrc,avalue){
$.each(avalue,function(keysrc1,value1){
var $imgLi = $("<li><a href=''><img src='" + value1 + "' alt='' /><p>11111</p></a></li>")
//這里開始和浮動布局不一樣了。其它部分在調(diào)用AJAX的時候,是一樣的;因?yàn)檫@里不需要指定插入到那個UL;
$this.children("ul").append($imgLi);
//獲取這個新插入到頁面中的LI的列的序號
var _liindex = $imgLi.index();
getcolums(_liindex);
//獲取這個新插入到頁面中的LI的高度值
var _nlih = $imgLi.outerHeight();
//設(shè)置當(dāng)前LI的TOP和LEFT
setLiOffset($imgLi,_nlih);
})
})
onOff = true;
})
}
})
}
});
})
}
})
})(jQuery)

DEMO下載 (這個要在本地機(jī)器上安裝服務(wù)器平臺。我用的是PHP套裝APPSERV,里面的是APACHE)

相關(guān)文章

  • Jquery組件easyUi實(shí)現(xiàn)選項(xiàng)卡切換示例

    Jquery組件easyUi實(shí)現(xiàn)選項(xiàng)卡切換示例

    這篇文章主要為大家詳細(xì)介紹了Jquery組件easyUi實(shí)現(xiàn)選項(xiàng)卡切換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • jQuery實(shí)現(xiàn)給input綁定回車事件的方法

    jQuery實(shí)現(xiàn)給input綁定回車事件的方法

    這篇文章主要介紹了jQuery實(shí)現(xiàn)給input綁定回車事件的方法,結(jié)合實(shí)例形式分析了2種常用的事件綁定操作技巧,需要的朋友可以參考下
    2017-02-02
  • 關(guān)注jquery技巧提高jquery技能(前端開發(fā)必學(xué))

    關(guān)注jquery技巧提高jquery技能(前端開發(fā)必學(xué))

    本文給大家介紹jquery前端開發(fā)關(guān)注jquery技巧提高jquery技能,對jquery前端開發(fā)感興趣的朋友可以參考下本文
    2015-11-11
  • Jquery異步上傳文件代碼實(shí)例

    Jquery異步上傳文件代碼實(shí)例

    這篇文章主要介紹了Jquery異步上傳文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Jquery uploadify上傳插件使用詳解

    Jquery uploadify上傳插件使用詳解

    這篇文章主要介紹了JQuery上傳插件Uploadify使用,文章給出詳細(xì)的步驟來實(shí)現(xiàn)一個簡單的上傳功能,感興趣的小伙伴們可以參考一下
    2016-01-01
  • jquery.cookie.js的介紹與使用方法

    jquery.cookie.js的介紹與使用方法

    相信大家都知道jquery.cookie.js是一個輕量級的cookie 插件,可以讀取、寫入、刪除 cookie。下面這篇文章就來給大家簡單的介紹下關(guān)于jquery.cookie.js的介紹與使用方法,需要的朋友可以參考借鑒,一起來看看吧。
    2017-02-02
  • jquery 關(guān)于event.target使用的幾點(diǎn)說明介紹

    jquery 關(guān)于event.target使用的幾點(diǎn)說明介紹

    本篇文章介紹了,jquery中關(guān)于event.target使用的幾點(diǎn)說明。需要的朋友參考下
    2013-04-04
  • jQuery中prop()方法用法實(shí)例

    jQuery中prop()方法用法實(shí)例

    這篇文章主要介紹了jQuery中prop()方法用法,以實(shí)例形式較為詳細(xì)的分析了prop()方法的功能、定義及獲取或者設(shè)置匹配元素屬性值的各種常見使用技巧,需要的朋友可以參考下
    2015-01-01
  • JQuery中DOM節(jié)點(diǎn)的操作與訪問方法實(shí)例分析

    JQuery中DOM節(jié)點(diǎn)的操作與訪問方法實(shí)例分析

    這篇文章主要介紹了JQuery中DOM節(jié)點(diǎn)的操作與訪問方法,結(jié)合實(shí)例形式分析了jquery操作dom節(jié)點(diǎn)與訪問dom節(jié)點(diǎn)相關(guān)實(shí)現(xiàn)技巧及操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • 基于jQuery實(shí)現(xiàn)拖拽圖標(biāo)到回收站并刪除功能

    基于jQuery實(shí)現(xiàn)拖拽圖標(biāo)到回收站并刪除功能

    這篇文章主要介紹了基于jQuery實(shí)現(xiàn)拖拽圖標(biāo)到回收站并刪除功能,實(shí)現(xiàn)非常簡單,我們直接可以利用jQuery內(nèi)部封裝的拖拽接口即可簡單實(shí)現(xiàn)在網(wǎng)頁上拖拽任意元素的功能,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評論

莲花县| 津市市| 西充县| 旺苍县| 习水县| 无锡市| 中西区| 松溪县| 安国市| 慈利县| 银川市| 大新县| 东城区| 三明市| 惠来县| 房产| 荆州市| 余江县| 武胜县| 三都| 阳朔县| 家居| 丰县| 惠安县| 华容县| 夹江县| 延川县| 屏南县| 马尔康县| 顺义区| 太谷县| 诸暨市| 甘洛县| 鹤庆县| 迭部县| 交城县| 漳平市| 东乡县| 芦山县| 荔波县| 黎城县|