瀑布流是当前一种比较流行的网站界面布局方式,参差不齐的多栏布局以及到达底部自动加载的方式,使网站在视觉和用户体验上都能得到较大的提升。最早使用此布局的是国外的图片网站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); } } } }
新闻热点
疑难解答
图片精选