瀑布流

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        ul{
            width:200px;
            background:greenyellow;
            float:left;
            margin-right:30px;
        }
        #all{
            width:1200px;
            margin:0 auto;
        }
        img{
            width:200px;
        }
    </style>
    <script src="ajax.js"></script>
</head>
<body>
<div id="all">
    <ul></ul>
    <ul></ul>
    <ul></ul>
    <ul></ul>
    <ul></ul>
</div>
<script>
    //页面初始值
    var iPage=1;
var oAll=document.getElementById("all");
var aUl=oAll.getElementsByTagName("ul");
    console.log(typeof oAll);
    //开关
    var onOff=true;
//    init();
//    function init(){
//        ajax("get","getPics.php","cpage"+iPage,function(rua){
//            var json=JSON.parse(rua);
//            for(var i=0;i<json.length;i++){
                for(var j=0;j<aUl.length;j++){}
//                var index_rua=short();
//                var newimg=document.createElement("img");
//                newimg.src=json[i].image;
//                newimg.style.height=json[i].height*(225/json[i].width)+'px';
//                aUl[index_rua].appendChild(newimg);
//            }
//        });
//    }
    //初始化
    init();
    function init(){
        ajax("get","getPics.php","cpage"+iPage,function(rua){
            var json=JSON.parse(rua);
            for(var i=0;i<json.length;i++){
                //创建一个数组
                var heiarr=[];
                //循环ul的长度吧所有的ul真实高度加入数组
                for(var y=0;y<aUl.length;y++){
                    heiarr.push(aUl[y].offsetHeight);
                }
                //数组排序(从小到大)
                heiarr.sort(function(num1,num2){
                    return num1-num2;
                });
                //创建img标签
                var newimg=document.createElement("img");
                //新创建的newimg的属性赋值
                newimg.src=json[i].image;
                newimg.style.height=json[i].height*(225/json[i].width)+'px';
                //循环所有ul
                for(var j=0;j<aUl.length;j++){
                    //测试所有的ul是否和数组中的第一个值相等
                    if(aUl[j].offsetHeight==heiarr[0]){
                        //如果相等则把创建的newimg放到当前ul中
                        aUl[j].appendChild(newimg);
                    }
                    //让开关为true
                    onOff=true;
                }

            }
        });
    }


    window.onscroll=function()
    {
        //建变量rua等于ul的最小长度
        var rua=short();
        //oUl就是当前最短的ul
        var oUl=aUl[rua];
        //兼容滚动
        var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
        //最短的ul实际高度+最后一张图片距可视区最顶部的距离  是否小于  可视区的高加上滚动的距离
        if(oUl.offsetHeight+toprua(oUl)<document.documentElement.clientHeight+scrollTop)
        {
            //如果小于则让开关编程false
            if(onOff)
            {
                onOff=false;
                //让请求的页数自加
                iPage++;
                //执行初始化函数
                init();
            }
        }
    }


    //求最短ul
    function short(){
        //创建索引
        var index=0;
        //创建变量等于第一个ul的真是高度
        var hei=aUl[index].offsetHeight;
        //循环ul
        for(var i=1;i<aUl.length;i++){
            //判断其他ul和第一个ul的数值大小
            if(aUl[i].offsetHeight<hei){
                //如果其他ul小于第一个,就让index等于当前ul的i
                index=i;
                //并且让hei等于当前ul的真是高度
                hei=aUl[i].offsetHeight;
            }
        }
        //放回索引值
        return index;
    }

    //闯入一个参 确定
    function toprua(obj)
    {
        //建一个变量itop
        var iTop=0;
        //当传入值存在的时候执行下面代码
        while(obj)
        {
            //让变量等于该对象距离最上面的距离
            iTop+=obj.offsetTop;
            //传入参数的数据等于他的定位父级(父级无定位)  body
            console.log(obj);
            //第一次进来是ul ,然后让obj等于他的定位父级  第二次进来是body  定位父级为null  下次就进不来循环
            obj=obj.offsetParent;
            console.log(obj);
        }
        //最后返回改变量
        return iTop;
    }
</script>
</body>
</html>


//ajax
function ajax(way,url,date,fn){
    var xhr=null;
    if(window.XMLHttpRequest){
        xhr=new XMLHttpRequest();
    }else{
        xhr=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(way=="get"){
        xhr.open(way,url+"?"+date,true);
        xhr.send();
        xhr.onreadystatechange= rua;
        function rua(){
            if(xhr.readyState==4){
                if(xhr.status==200){
                   fn(xhr.responseText);
                }
            }
        }
    }
    else{
        xhr.open(way,url,true);
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
        xhr.send(date);
        xhr.onreadystatechange=function(){
            if(xhr.readyState==4){
                if(xhr.status==200){
                    fn(xhr.responseText);
                }
            }
        }
    }
}

//请求的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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值