您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

怎么用AJAX实现瀑布流

2024/4/16 5:22:45发布14次查看
这次给大家带来怎么用ajax实现瀑布流,用ajax实现瀑布流的注意事项有哪些,下面就是实战案例,一起来看一下。
瀑布流是当前一种比较流行的网站界面布局方式,参差不齐的多栏布局以及到达底部自动加载的方式,使网站在视觉和用户体验上都能得到较大的提升。最早使用此布局的是国外的图片网站pinterest,之后国内的一些图片网站也开始使用瀑布流布局,包括和pinterest类似的花瓣网、图片社区lofter、美丽说、蘑菇街等等。
瀑布流在布局上对于大多数人来说应该是很简单的,比较只有几列而已。瀑布流最主要的还是数据的异步加载。
首先说一下这次实例所用的瀑布流式方法。瀑布流布局实现的方法很多,具体可以自行百度,此处不再赘述。本文中瀑布流实现方法为四列布局(li*4),每个图片为一个盒子(p>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 p{          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);        //将数据写入到p中        for(var i = 0; i < data.length; i++) { var index = getshort(li);//查找最短的li //创建新的节点:p>img+p          var p = document.createelement('p');          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;          p.appendchild(img);          var p = document.createelement('p');          p.innerhtml = data[i].title;//p获取图片标题          p.appendchild(p);          //加入到最短的li中          li[index].appendchild(p);        }        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 这部分的功能主要是动态的将生成的p写入到页面中,其中包含对盒子样式的修改和数据的写入,数据通过ajax函数从服务器端获取。
需要注意的是:该实例的运行依赖于服务器,所以需要在本地搭建一个简单的服务器,快速搭建可以使用wampservice。
下面是我们数据来源的php代码:
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
ajax+php的数据交互实现
ajax的循环如何实现
以上就是怎么用ajax实现瀑布流的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product