ajax 瀑布流实现

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
body{
    margin:0px;
    padding:0px;
    }
ul{
    width:1080px;
    margin: 100px auto 0;
    }
li{
    width:248px;
    float:left;
    border:1px solid pink;
    list-style:none;
    margin-right:10px;
    }
li div {
    border: 1px solid #000;
     padding: 10px;
     margin-bottom: 10px;
     }
li div img {
    width: 225px;
    display: block;
    }
</style>
<script>
window.onload = function ()
{
    var oul = document.getElementById(‘ul1‘);
    var ali = oul.getElementsByTagName(‘li‘);
    var b = true;
    var ipage =  1;

    getlist();

    function getlist()
    {
        ajax(‘get‘,‘ajax pbl.php‘,‘cpage=‘+ipage,function (data)
        {
            var data = JSON.parse(data);
            if(!(data.length))
            {
                return;
            }
            for(var i = 0; i < data.length; i++)
            {
                var _index = getshort();
                var odiv = document.createElement(‘div‘);
                var oimg = document.createElement(‘img‘);
                oimg.src = data[i].preview;
                oimg.style.width = ‘225px‘;
                oimg.style.height = data[i].height*(225/data[i].width)+ ‘px‘;
                odiv.appendChild(oimg);
                var op = document.createElement(‘p‘);
                op.innerHTML =  data[i].title;
                odiv.appendChild(op);

                ali[_index].appendChild(odiv);
            }

            b = true;
        });

    }
    window.onscroll = function ()
    {
        var _index = getshort();
        var oli = ali[_index];

        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;

        if(gettop(oli)+oli.offsetHeight < document.documentElement.clientHeight + scrollTop)
        {
            if(b)
            {
                b = false;
                ipage++;
                getlist();
            }
        }
    }

    function getshort()
    {
        var index = 0;
        var ih = ali[index].offsetHeight;

        for(var i = 1; i < ali.length; i++)
        {
            if(ali[i].offsetHeight < ih )
            {
                index = i;
                ih = ali[index].offsetHeight;
            }
        }
        return index;
    }

    function gettop(obj)
    {
        var itop = 0;
        while(obj)
        {
            itop +=obj.offsetTop;
            obj = obj.offsetParent;
        }
        return itop;
    }

    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);
                }
                else
                {
                    alert(‘出错了,Err:‘+ xhr.status);
                }
            }
        }
    }

}
</script>
</head>

<body>

<ul id="ul1">
    <li></li>
    <li></li>
    <li></li>
    <li></li>

</ul>
</body>
</html>
<?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;

?>
时间: 2024-10-13 08:00:25

ajax 瀑布流实现的相关文章

瀑布流原生ajax,demo

最近听朋友们说起瀑布流挺多的,自己就去研究下了,一个简单的原生demo,分享给大家... 简单分为三个文档,有详细的注释:img:ajax.php:demo.php 其中img文件夹中放入图片 1.jpg:2.jpg;3.jpg.... ajax.php页面 <?php //模拟从数据库读取数据    $arr = array();    $op = opendir('./img');    //打开目录 //循环读取目录    while (($file = readdir($op)) !==

瀑布流ajax分页

index.jsp 1 <%@ page language="java" pageEncoding="UTF-8"%> 2 <!DOCTYPE HTML> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 6 <title>图片&

瀑布流 ajax 预载入 json

pbl.json[模拟后台json数据]: [ { "id": "511895", "title": "Smashicons: 300 Free Icons | GraphicBurger", "referer": "http://graphicburger.com/smashicons-300-free-icons/", "url": "http://ww

瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据

瀑布流加载显示数据,在当下已经用的很普遍,尤其是我们在做网上商城时,在产品列表页面已经被普遍使用. 对于实现瀑布流布局的解决方案主要有以下两种方式: 1.对每一条显示数据使用绝对定位+浮动的方式,这样也会有一个问题----必须要知道每一条信息的具体高宽度 2.采用列布局,将每一条数据依次放置到每一列 其实两者的实现原理都是大同小异,现在我将针对第二种解决方案,用一个具体的事例来说明 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2

ajax抓取网站接口图片瀑布流笔记

用php结合ajax来实现去其它网站抓取图片,在自己本地用! ajax代码部分 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>图片瀑布流</title> </head> <style>     body{         margin:0;     }    #u

AJAX异步实现简单的瀑布流

传统瀑布流布局ul-li,需要先设定显示几列,每列是一个li,需要左浮动并指定宽度,li里面的布局也要先布局好,主要是要定宽,高度自动:然后通过ajax异步,从数据库中得到数据,遍历后将数据插入最矮的li中 HTML中的代码: <!--定义JS中需要的数据--><script type="text/javascript">var ajaxHandle='<{:U("Index/Typeshow/ajax","",&q

瀑布流 ajax 预加载 json

pbl.json[模拟后台json数据]: [ { "id": "511895", "title": "Smashicons: 300 Free Icons | GraphicBurger", "referer": "http://graphicburger.com/smashicons-300-free-icons/", "url": "http://ww

【jQuery Demo】图片瀑布流实现

瀑布流就是像瀑布一样的网站——丰富的网站内容,特别是绚美的图片会让你流连忘返.你在浏览网站的时候只需要轻轻滑动一下鼠标滚轮,一切的美妙的图片精彩便可呈现在你面前.瀑布流网站是新兴的一种网站模式——她的典型代表是pinterest.美丽说.蘑菇街这类型的网站. 下面是效果: 核心内容: 1.先设置布局,主要HTML代码如下 <div id="container"> <div class="box"> <div class="co

jQuery瀑布流插件——jQuery.Waterfall

插件--jQuery.Waterfall 思路: 其实只要了解了整个流程,要实现这个插件也不难,大家都玩过俄罗斯方块吧,原理差不多,找到合适的地方叠上去就好了,在这里,每个块的宽度是必需给定的,然后计算出列数,再维护一个数组,存储每列的高度,往最小高度的列添加块即可.滚动时,当最小高度出现在可视窗口时就启动ajax从服务器拉取更多的数据. 注意的地方: 如果瀑布流的块中包含图片,则需要事先知道图片的高度(其实就是为了要计算出整个块的高度,以便精确定位),图片的高度可以从服务器返回,本插件是整合p