AJAX+json+jquery實現預先載入瀑布流布局

來源:互聯網
上載者:User

標籤:style   http   color   os   io   使用   java   ar   for   

寬度是一定的高度不定的瀑布流布局 也可以說是無縫拼圖 當瀏覽器滾動到底部時候自動載入圖片 載入的圖片地址用json 在img.js裡 ,還有正在載入動畫是用 css3製作的 在ff等支援css3可以顯示 你如果想全面支援瀏覽器可以用gif動畫 代碼裡有詳細解釋就不多說了 
?1. [代碼]預先載入/瀑布流  
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>定寬Jquery+AJAX+JSON瀑布流布局(每行代碼都有詳細注釋)</title>
<style type="text/css">
body, ul, li, h3 { margin: 0; padding: 0; list-style: none; font: bold 12px "微軟雅黑"; }
/*瀑布流配置樣式*/
#lxf-box { position: relative; width: 1000px; margin:0 auto;}
#lxf-box li { background: #fff; border: solid 1px #ccc; text-align: center; padding: 10px; float: left;}
h3 { padding-top: 8px; }
img { width: 200px; height: auto; display: block; border: 0 }
/*css3動畫 注由於是css3製作的所以相容性不保證 要想相容性好 請自己做成gif動畫載入圖*/
/*li { -webkit-transition: all .7s ease-out .1s; -moz-transition: all .7s ease-out; -o-transition: all .7s ease-out .1s; transition: all .7s ease-out .1s }*/
#loading { display:none; line-height: 30px; background: #000; color:#fff; text-align: center; height: 30px; width: 100%; position:fixed; bottom:0; opacity:0.8;}
</style>
<script src="http://www.iiwnet.com/templets/niu/js/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<h1 color="red">預覽無效果請重新整理</h1>
<ul id="lxf-box">
  <li><a href="http://www.iiwnet.com/div_css/342.html"><img src="http://www.iiwnet.com/uploads/allimg/120814/1-120Q411544TX.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/ajax/237.html"><img src="http://www.iiwnet.com/uploads/allimg/120801/1-120P1223013157.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/js_ad/271.html/"><img src="http://www.iiwnet.com/uploads/allimg/120808/1-120PP00915a2.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/js_texiao/312.html/"><img src="http://www.iiwnet.com/uploads/allimg/120812/1-120Q2150022G8.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/js_pic/191.html/"><img src="http://www.iiwnet.com/uploads/allimg/120722/1-120H2144003129.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/js_pic/318.html/"><img src="http://www.iiwnet.com/uploads/allimg/120812/1-120Q2161941b2.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/div_css/341.html/"><img src="http://www.iiwnet.com/uploads/allimg/120814/1-120Q4113240U2.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/div_css/350.html/"><img src="http://www.iiwnet.com/uploads/allimg/120814/125411K11-2.png"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/div_css/350.html/"><img src="http://www.iiwnet.com/uploads/allimg/120814/1254113249-12.png"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/div_css/349.html/"><img src="http://www.iiwnet.com/uploads/allimg/120814/12500a292-1.png"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/php_base/336.html/"><img src="http://www.iiwnet.com/uploads/allimg/120813/1-120Q3145U0938.jpg"></a>
    <h3>圖片標題</h3>
  </li>
  <li><a href="http://www.iiwnet.com/div_css/344.html/"><img src="http://www.iiwnet.com/uploads/allimg/120814/12353B521-0.jpg"></a>
    <h3>圖片標題</h3>
  </li>
</ul>
<div id="loading">正在載入……</div>
<script>
/*
原理:1.把所有的li的高度值放到數組裡面
     2.第一行的top都為0
 3.計算高度值最小的值是哪個li
 4.把接下來的li放到那個li的下面
<a href="http://iiwnet.com/js_web/">網頁特效代碼</a>:http://iiwnet.com
編寫時間:2012年6月9日
*/
function iiwnet(){//定義成函數便於調用
var wrap = document.getElementById("lxf-box")
var margin = 10;//這裡設定間距
var li=$("li");//這裡是區塊名稱
varli_W = li[0].offsetWidth+margin;//取區塊的實際寬度(包含間距,這裡使用源生的offsetWidth函數,不適用jQuery的width()函數是因為它不能取得實際寬度,例如元素內有pandding就不行了)
var h=[];//記錄區塊高度的數組
    li.css("position","absolute");
var n = wrap.offsetWidth/li_W|0;//容器的寬度除以區塊寬度就是一行能放幾個區塊
for(var i = 0;i < li.length;i++) {//有多少個li就迴圈多少次
li_H = li[i].offsetHeight;//擷取每個li的高度
if(i < n) {//n是一行最多的li,所以小於n就是第一行了
h[i]=li_H;//把每個li放到數組裡面
li.eq(i).css("top",0);//第一行的Li的top值為0
li.eq(i).css("left",i * li_W);//第i個li的左座標就是i*li的寬度
}http://www.huiyi8.com/hunsha/hanshi/?
else{韓式婚紗照片
min_H =Math.min.apply(null,h) ;//取得數組中的最小值,區塊中高度值最小的那個
minKey = getarraykey(h, min_H);//最小的值對應的指標
h[minKey] += li_H+margin ;//加上新高度後更新高度值
li.eq(i).css("top",min_H+margin);//先得到高度最小的Li,然後把接下來的li放到它的下面
li.eq(i).css("left",minKey * li_W);//第i個li的左座標就是i*li的寬度
}
$("h3").eq(i).text("編號:"+i+",高度:"+li_H);//把區塊的序號和它的高度值寫入對應的區塊H3標題裡面
$("li").animate({opacity:1});
}
}
/* 使用for in運算返回數組中某一值的對應項數(比如算出最小的高度值是數組裡面的第幾個) */
function getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}}
/*這裡一定要用onload,因為圖片不載入完就不知道高度值*/
window.onload = function() {iiwnet();};
/*瀏覽器視窗改變時也運行函數*/
window.onresize = function() {iiwnet();};
/**********************************************************************/
/*無限載入*/
var i=1;
function getMore(){
$("#loading").show();
var json = "http://www.iiwnet.com/images/jstx/img.js";
$.getJSON(json, function(data){
$.each(data,function(i){
var url=data[i].url;
var html="<li style=‘opacity:0‘><a href=‘http://www.iiwnet.com/‘><img src="+url+" ></a><h3>圖片標題</h3></li>";
$("#lxf-box").append(html);
$("#loading").hide();
});
iiwnet();
i=1
});
};
/*滾動到底部的時候*/
 $(window).bind("scroll",function(){
if( $(document).scrollTop() + $(window).height() > $(document).height() - 10 && i==1) {
i=0;
getMore();
}
 });
</script>
</body>
</html>
?

AJAX+json+jquery實現預先載入瀑布流布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.