国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

AJAX實現瀑布流布局

來源:懂視網 責編:小采 時間:2020-11-27 22:51:47
文檔

AJAX實現瀑布流布局

AJAX實現瀑布流布局:瀑布流是當前一種比較流行的網站界面布局方式,參差不齊的多欄布局以及到達底部自動加載的方式,使網站在視覺和用戶體驗上都能得到較大的提升。最早使用此布局的是國外的圖片網站Pinterest,之后國內的一些圖片網站也開始使用瀑布流布局,包括和Pintere
推薦度:
導讀AJAX實現瀑布流布局:瀑布流是當前一種比較流行的網站界面布局方式,參差不齊的多欄布局以及到達底部自動加載的方式,使網站在視覺和用戶體驗上都能得到較大的提升。最早使用此布局的是國外的圖片網站Pinterest,之后國內的一些圖片網站也開始使用瀑布流布局,包括和Pintere

瀑布流是當前一種比較流行的網站界面布局方式,參差不齊的多欄布局以及到達底部自動加載的方式,使網站在視覺和用戶體驗上都能得到較大的提升。最早使用此布局的是國外的圖片網站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.offsetTop<scrollTop+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; 
 
?> 

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

AJAX實現瀑布流布局

AJAX實現瀑布流布局:瀑布流是當前一種比較流行的網站界面布局方式,參差不齊的多欄布局以及到達底部自動加載的方式,使網站在視覺和用戶體驗上都能得到較大的提升。最早使用此布局的是國外的圖片網站Pinterest,之后國內的一些圖片網站也開始使用瀑布流布局,包括和Pintere
推薦度:
標簽: 實現 布局 ajax
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产伦精品一区二区三区 | 国产成人三级经典中文 | www日韩| 亚洲欧美日韩在线观看二区 | 久久精品国产亚洲精品2020 | 国产精品久久久久国产精品 | 精品一区二区三区四区电影 | 欧美日韩高清不卡免费观看 | 91久久国产综合精品 | 日本人乱人乱亲乱色视频观看 | 在线观看国产一区二区三区 | 久久91精品国产一区二区 | 国产在线观看免费 | 欧美交性又色又爽又黄 | 欧美91精品| 免费在线观看一区二区 | 在线免费视频国产 | 精品国产一区二区三区香蕉 | 日本a黄 | 亚洲一区日韩二区欧美三区 | 欧美性猛交一区二区三区精品 | 国产免费播放 | 国产精品久久久久久久久99热 | 国产欧美日本亚洲精品五区 | 精品日韩一区二区 | 国产高清一区二区三区 | 精品国产乱码久久久久久一区二区 | 国产精品大全国产精品 | 欧美韩日 | 国产伦精一区二区三区 | 伊人情人综合成人久久网小说 | 国产在线视欧美亚综合 | 久久综合精品国产一区二区三区 | 中文国产成人精品久久久 | 久久er| 欧美亚洲第一页 | 亚洲视频在线观看视频 | 欧美日韩亚洲第一页 | 在线视频日韩 | 伊人久久中文字幕久久cm | 久久伊人免费视频 |