ajax瀑布流

首先要有必要的PHP接口技术。去获取部分数据

接口代码如下:

<?php
header('Content-type:text/html; charset="utf-8"');
$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;

?>

二、搭结构并布局(html+css);

<body>
    <ul id="ul1">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
<style>
body {margin: 0;}
#ul1 {width: 1080px; margin: 100px auto 0;}
li { width: 247px; list-style: none; float: left; margin-right: 10px; }
li div {border: 1px solid #000; padding: 10px; margin-bottom: 10px;}
li div img { width: 225px; display: block;}
</style>

三、最重要的开始了

1、获取DOM节点并初始化数据

var oUl=document.getElementById('ul1');
var aLi=oUl.getElementsByTagName('li');
var ipage=1;
ajaxFN();
var b=true;

2、通过数据接口文件getPics.php获取数据。然后创建对象并插入到li里面

function ajaxFN(){
                //通过数据接口文件getPics.php获取数据。然后插入到li里面
                ajax('get','getPics.php','cpage'+ipage,function(data){
                var data=JSON.parse(data);  
                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=225+'px';
                    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);                   
                }               
            });
            return b=true;
        }       
        function getShort(){
            var index=0;
            var minLiH=aLi[index].offsetHeight;
            for(var i=0;i<aLi.length;i++){              
            if(minLiH>aLi[i].offsetHeight){                                 
                    minLiH=aLi[i].offsetHeight;
                    index=i;
                }
            }
            return index;
        }

四、当页面向下滑动的距离比最小的li的高度还小的时候、就触发ajaxFN()函数加载第二页的内容;

    window.onscroll=function(){
            var index2=getShort();
            var scrollTop=document.documentElement.scrollTop || document.body.scrollTop;
            var PH=document.documentElement.clientHeight;
            if(PH+scrollTop>aLi[index2].offsetHeight+aLi[index2].offsetTop){
                if(b){
                    b=false;
                    ipage++;
                    ajaxFN();                   
                }               
            }
        };      
    };

全部代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
body {margin: 0;}
#ul1 {width: 1080px; margin: 100px auto 0;}
li { width: 247px; list-style: none; float: left; margin-right: 10px; }
li div {border: 1px solid crimson; padding: 10px; margin-bottom: 10px;}
li div img { width: 225px; display: block;}
</style>
<script src="ajax.js"></script>
<script type="text/javascript">
    window.onload=function(){
        //初始化数据
        var oUl=document.getElementById('ul1');
        var aLi=oUl.getElementsByTagName('li');
        var ipage=1;
        ajaxFN();
        var b=true;
//--------------------------------------------------------------------              
        function ajaxFN(){
                //通过数据接口文件getPics.php获取数据。然后插入到li里面
                ajax('get','getPics.php','cpage'+ipage,function(data){
                var data=JSON.parse(data);
            //  alert(data.length);
                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=225+'px';
                    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);                   
                }               
            });
            return b=true;
        }
//--------------------------------------------------------------------              
        function getShort(){
            var index=0;
            var minLiH=aLi[index].offsetHeight;
            for(var i=0;i<aLi.length;i++){
                if(minLiH>aLi[i].offsetHeight){                                     
                    minLiH=aLi[i].offsetHeight;
                    index=i;
                }
            }
            return index;
        }
//--------------------------------------------------------------------      
        window.onscroll=function(){
            var index2=getShort();
            var scrollTop=document.documentElement.scrollTop || document.body.scrollTop;
            var PH=document.documentElement.clientHeight;
            if(PH+scrollTop>aLi[index2].offsetHeight+aLi[index2].offsetTop){
                if(b){
                    b=false;
                    ipage++;
                    ajaxFN();                   
                }               
            }
        };      
    };

</script>
</head>
<body>
    <ul id="ul1">
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</body>
</html>

每日清新
这里写图片描述

作者:王华桥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值