婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > AJAX實現瀑布流布局

AJAX實現瀑布流布局

熱門標簽:河間市地圖標注app 立陶宛地圖標注 地圖標注推銷坑人 上海企業外呼系統價錢 怎樣在地圖標注文字 東平縣地圖標注app 中國地圖標注不明確情況介紹表 大眾點評400電話怎么申請 電銷機器人 長春

瀑布流是當前一種比較流行的網站界面布局方式,參差不齊的多欄布局以及到達底部自動加載的方式,使網站在視覺和用戶體驗上都能得到較大的提升。最早使用此布局的是國外的圖片網站Pinterest,之后國內的一些圖片網站也開始使用瀑布流布局,包括和Pinterest類似的花瓣網、圖片社區lofter、美麗說、蘑菇街等等。

瀑布流在布局上對于大多數人來說應該是很簡單的,比較只有幾列而已。瀑布流最主要的還是數據的異步加載。

首先說一下這次實例所用的瀑布流式方法。瀑布流布局實現的方法很多,具體可以自行百度,此處不再贅述。本文中瀑布流實現方法為四列布局(li*4),每個圖片為一個盒子(div>img+p),從后臺讀取數據后賦值給盒子中的元素,判定此時高度最小的列(li),然后將盒子添加到對應的列(li),之后進行下一次判定,以此類推,直至本頁所有數據加載完成。

代碼部分:

html+css

!DOCTYPE html> 
html> 
  head> 
    meta charset="UTF-8"> 
    title>瀑布流布局/title> 
    style type="text/css"> 
      *{ 
        margin: 0; 
        padding: 0; 
      } 
      ul{ 
        width: 1200px; 
        margin: 0 auto; 
      } 
      ul li{ 
        float: left; 
        width: 250px; 
        list-style: none; 
        margin: 20px; 
      } 
      ul li div{ 
        width: 250px; 
        margin-bottom: 20px; 
        padding: 10px; 
        box-sizing: border-box; 
        border-radius: 5px; 
        box-shadow: 2px 2px 10px #919B9C; 
      } 
      ul li img{ 
        width: 100%; 
        margin-bottom: 10px; 
      } 
      ul li p{ 
        font-family: "microsoft yahei"; 
        font-size: 14px; 
      } 
    /style> 
    script src="ajax.js" type="text/javascript" charset="utf-8">/script> 
    script src="pubuliu.js" type="text/javascript" charset="utf-8">/script> 
  /head> 
  body> 
    ul id="ul1"> 
      li>/li> 
      li>/li> 
      li>/li> 
      li>/li> 
    /ul> 
  /body> 
/html>

javascript部分:ajax部分和實現部分

/** 
 * 
 * @param {Object} method get和post方式 
 * @param {Object} url 文件路徑 
 * @param {Object} data 頁碼 
 * @param {Object} success 成功的函數 
 */ 
function ajax(method, url, data, success) { 
  var xhr = null; 
  try { 
    xhr = new XMLHttpRequest(); 
  } catch (e) { 
    xhr = new ActiveXObject('Microsoft.XMLHTTP'); 
  } 
   
  if (method == 'get'  data) { 
    url += '?' + data; 
  } 
   
  xhr.open(method,url,true); 
  if (method == 'get') { 
    xhr.send(); 
  } else { 
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); 
    xhr.send(data); 
  } 
   
  xhr.onreadystatechange = function() { 
     
    if ( xhr.readyState == 4 ) { 
      if ( xhr.status == 200 ) { 
        success  success(xhr.responseText); 
        console.log(xhr.responseText); 
      } else { 
        alert('出錯了,Err:' + xhr.status); 
      } 
    } 
     
  } 
}

 ajax部分是在之前所寫的Ajax工作原理以及函數的簡單封裝上修改而來,理解那個之后看這個基本沒難度。這個相對那個來說多了一個data參數,data是用來讀取數據的頁碼。

window.onload = function() { 
  //獲取界面節點 
  var ul = document.getElementById('ul1'); 
  var li = document.getElementsByTagName('li'); 
  var liLen = li.length; 
  var page = 1; 
  var bool = false; 
  //調用接口獲取數據 
  loadPage();//首次加載 
  /** 
   * 加載頁面的函數 
   */ 
  function loadPage(){ 
    ajax('get', 'getPics.php', 'cpage='+page, function(data) { 
      //將數據庫中獲取的數據轉換成數組形式,這里要根據數據庫中的數據形式來寫,這里我獲取到的是json形式 
      var data = JSON.parse(data); 
      //將數據寫入到div中 
      for(var i = 0; i  data.length; i++) { 
        var index = getShort(li);//查找最短的li 
        //創建新的節點:div>img+p 
        var div = document.createElement('div'); 
        var img = document.createElement('img'); 
        img.src = data[i].preview;//img獲取圖片地址 
        img.alt = "等著吧..." 
        //根據寬高比計算img的高,為了防止未加載時高度太低影響最短Li的判斷 
        img.style.height = data[i].height * (230 / data[i].width) + "px"; 
        div.appendChild(img); 
        var p = document.createElement('p'); 
        p.innerHTML = data[i].title;//p獲取圖片標題 
        div.appendChild(p); 
        //加入到最短的li中 
        li[index].appendChild(div); 
      } 
      bool = true;//加載完成設置開關,用于后面判斷是否加載下一頁 
    }); 
  } 
   
  window.onscroll = function (){ 
    var index = getShort(li); 
    var minLi = li[index]; 
    var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; 
     
    if(minLi.offsetHeight+minLi.offsetTopscrollTop+document.documentElement.clientHeight){ 
      //開關為開,即上一頁加載完成,才能開始加載 
      if(bool){ 
        bool = false; 
        page++; 
        loadPage(); 
      } 
    } 
  } 
 
} 
/** 
 * 獲取數組中高度最小的索引 
 * @param {Object} li 數組 
 */ 
function getShort(li) { 
  var index = 0; 
  var liHeight = li[index].offsetHeight; 
  for(var i = 0; i  li.length; i++) { 
    if(li[i].offsetHeight  liHeight) { 
      index = i; 
      liHeight = li[i].offsetHeight; 
    } 
  } 
  return index; 
} 

這部分的功能主要是動態的將生成的div寫入到頁面中,其中包含對盒子樣式的修改和數據的寫入,數據通過ajax函數從服務器端獲取。

需要注意的是:該實例的運行依賴于服務器,所以需要在本地搭建一個簡單的服務器,快速搭建可以使用WampService。

下面是我們數據來源的php代碼:

?php 
header('Content-type:text/html; charset="utf-8"'); 
 
/* 
API: 
  getPics.php 
 
    參數 
    cpage : 獲取數據的頁數 
*/ 
$cpage = isset($_GET['cpage']) ? $_GET['cpage'] : 1; 
 
$url = 'http://www.wookmark.com/api/json/popular?page=' . $cpage; 
 
$content = file_get_contents($url); 
$content = iconv('gbk', 'utf-8', $content); 
 
echo $content; 
 
?> 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 原生js實現移動端瀑布流式代碼示例
  • 原生JS實現響應式瀑布流布局
  • 原生ajax瀑布流demo分享(必看篇)

標簽:本溪 玉樹 銅川 遼寧 內江 營口 四川 益陽

巨人網絡通訊聲明:本文標題《AJAX實現瀑布流布局》,本文關鍵詞  AJAX,實現,瀑布,流,布局,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《AJAX實現瀑布流布局》相關的同類信息!
  • 本頁收集關于AJAX實現瀑布流布局的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91国产免费观看| 一区二区高清免费观看影视大全| 久久精品噜噜噜成人av农村| 91欧美激情一区二区三区成人| 美国三级日本三级久久99| 7777精品伊人久久久大香线蕉| 欧美亚洲国产一区二区三区va | 欧美日韩一级片在线观看| 艳妇臀荡乳欲伦亚洲一区| 国产午夜精品久久久久久免费视 | 国产九九视频一区二区三区| 粉嫩av一区二区三区粉嫩| 欧美日韩另类国产亚洲欧美一级| 国产精品免费视频网站| 精品国产网站在线观看| 5月丁香婷婷综合| 91老师国产黑色丝袜在线| 欧美成人在线直播| 亚洲影视资源网| 一区二区三区国产精品| 国产亚洲欧洲一区高清在线观看| 欧美午夜电影网| 日本韩国欧美一区| 亚洲精品乱码久久久久久日本蜜臀| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美特级限制片免费在线观看| 亚洲午夜在线电影| 亚洲日本护士毛茸茸| 免费高清不卡av| 视频一区视频二区中文| 在线观看视频欧美| 偷偷要91色婷婷| 欧美视频三区在线播放| 天堂一区二区在线免费观看| 日韩国产高清影视| 亚洲精品你懂的| 全国精品久久少妇| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩在线电影| 中文字幕不卡在线| 欧美精品一区二区三区高清aⅴ| 亚洲丰满少妇videoshd| 一本色道久久加勒比精品| 亚洲一区二区三区小说| 欧美视频第二页| 亚洲一线二线三线久久久| 制服丝袜在线91| 国产成人精品三级| 亚洲欧美日韩一区| 精品久久久久久久久久久久包黑料| 日本aⅴ精品一区二区三区| 色婷婷精品久久二区二区蜜臀av| 亚洲欧美日韩国产综合在线| 91亚洲国产成人精品一区二三| 亚洲欧美日韩精品久久久久| 欧美日韩国产综合视频在线观看| 蜜桃视频一区二区三区在线观看 | 午夜精品123| 欧美理论电影在线| 4438x成人网最大色成网站| 欧美在线一二三四区| 欧美视频第二页| 欧美主播一区二区三区| 97se亚洲国产综合自在线不卡| 免费高清视频精品| 一区二区三区.www| 日本乱人伦一区| 日韩国产在线一| 91精品国产91久久久久久最新毛片| 中文字幕永久在线不卡| 91麻豆文化传媒在线观看| 日韩**一区毛片| 精品国产伦理网| 欧美三区在线观看| 亚洲另类色综合网站| 国产成人精品三级| 亚洲已满18点击进入久久| 欧美唯美清纯偷拍| 成人av资源在线观看| 亚洲摸摸操操av| 亚洲天天做日日做天天谢日日欢| 国产精品狼人久久影院观看方式| 在线观看免费视频综合| 激情伊人五月天久久综合| 国产农村妇女毛片精品久久麻豆| 欧美一卡2卡三卡4卡5免费| 日本道色综合久久| 欧洲精品在线观看| 欧美日韩免费电影| 91在线云播放| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲欧美日韩久久精品| 国产精品久久久久永久免费观看 | 亚洲综合久久久久| 精品国产成人系列| 欧美吞精做爰啪啪高潮| 成人黄页在线观看| 国产精品综合视频| 91社区在线播放| 91视频免费播放| 国产白丝网站精品污在线入口| 日韩精品电影一区亚洲| 一级中文字幕一区二区| 亚洲观看高清完整版在线观看| 中文字幕第一区第二区| 欧美肥胖老妇做爰| 日韩欧美一区在线| 欧美成人一级视频| 精品国产成人在线影院 | 色综合久久久久久久久| av在线这里只有精品| 9人人澡人人爽人人精品| 在线看国产一区二区| 欧美三级韩国三级日本三斤| 91 com成人网| 欧美激情一区三区| 偷窥国产亚洲免费视频| 亚洲一区av在线| 毛片av一区二区| 美女视频黄 久久| 欧美日韩国产美| 亚洲特级片在线| 国产成人亚洲精品青草天美 | 日韩精品中文字幕在线一区| 欧美高清dvd| 五月天欧美精品| 成人免费高清在线观看| 欧美日韩在线播放一区| 国产精品久久福利| 5566中文字幕一区二区电影| 亚洲日本电影在线| 99久久精品国产观看| 欧美午夜在线一二页| 欧美r级电影在线观看| 精品国产网站在线观看| 久久99国产精品尤物| 亚洲成人一区在线| 国产成a人亚洲精品| 久久免费视频色| 天堂午夜影视日韩欧美一区二区| 久久综合久久综合久久| 久久99精品一区二区三区| 国产欧美一区二区三区在线老狼| 激情文学综合插| 亚洲一区二区av电影| 精品精品国产高清一毛片一天堂| 欧美日本一区二区三区四区| 一区二区三区四区不卡视频| 欧美性色黄大片| 久久精品噜噜噜成人88aⅴ| 欧美精品一区二区三区高清aⅴ | 久久久www成人免费无遮挡大片| 国产精品三级av| 在线观看亚洲a| 激情深爱一区二区| 国产欧美日韩在线观看| 中文字幕欧美一| 国产精品欧美一级免费| 亚洲人妖av一区二区| 午夜欧美电影在线观看| 久久99精品久久久久久久久久久久 | 日韩av一区二区三区四区| 国产一区二区伦理| 欧美丰满高潮xxxx喷水动漫| 精品成人一区二区| 中文字幕在线观看一区二区| 亚洲高清免费观看| 色婷婷综合久久久久中文 | 国产超碰在线一区| 欧美一级高清大全免费观看| 国产视频不卡一区| 日韩高清一级片| 在线不卡a资源高清| 亚洲图片你懂的| 91在线国产福利| 亚洲国产精品精华液2区45| 久久国产精品72免费观看| 一区二区三区日韩精品视频| 国产精品久久久久久户外露出| 日韩av在线播放中文字幕| 国产乱子轮精品视频| 欧美日韩另类国产亚洲欧美一级| 国产精品视频免费看| 成人激情免费电影网址| 久久综合精品国产一区二区三区 | 久久精品国产在热久久| 欧美群妇大交群中文字幕| 亚洲乱码国产乱码精品精小说 | 欧美日韩亚洲综合在线| 亚洲欧美激情一区二区| 欧美在线不卡视频| 一区二区三区国产豹纹内裤在线 | 欧美一级免费大片| 亚洲第一二三四区| 制服丝袜亚洲网站| 国产精品系列在线观看| 国产精品三级av| 欧美日本国产一区| 天天av天天翘天天综合网| 91精品国产免费|