首页 > 开发 > AJAX > 正文

AJAX实现瀑布流布局

2024-09-01 08:27:40
字体:
来源:转载
供稿:网友

瀑布流是当前一种比较流行的网站界面布局方式,参差不齐的多栏布局以及到达底部自动加载的方式,使网站在视觉和用户体验上都能得到较大的提升。最早使用此布局的是国外的图片网站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);       }     }        } }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表