随着瀑布流的出现,现在这种技术风靡到各大电商网站,感觉是可能用户的体验度的比较高不??? 今天我就给大家代码,今天有点事太麻烦,所以等过两天我再给大家讲一下原理

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Show</title>
        <style>
            #water {
                /*width:960px;*/
				/*margin:0 auto;*/
            }
            #water li{
                list-style:none;
                float:left;
            }
            #water li div{
                padding:10px;
            }
        </style>
<script>
            var pic_width=220;       //每张图片的宽度
            var pic_num=10;          //每次显示10张图片
            var from=0;              //数据库中从第几张开始显示,第一张开始是0
			/* 页面加载完初始化,获取图片 */
			window.onload=function(){
                init();                //初始化动态生成列数
                loadPic();             //获取图片
			}
			/* 当浏览器宽度发生变化时,重新初始化 */
            window.onresize=function(){
                init();               
                loadPic();
			}
			/* 当滚动条移动到距底部还有200距离的时候加载新的图片 */
            window.onscroll=function(){
 			   var sHeight=document.documentElement.scrollTop||document.body.scrollTop;//滚动的高度
    			var wHeight=document.documentElement.clientHeight; //窗口高度
    			var dHeight=document.documentElement.offsetHeight;//文档高度
				if(dHeight-wHeight-sHeight<200){
					from=from+pic_num;                //从数据库中获取后面的图片信息,要更改from值,该值会通过ajax传入到服务器端
          			loadPic();
    			}
			}
			/* 初始化,动态计算页面宽度,算出列数 */
			function init(){
				var oul=document.createElement('ul');               //生成ul对象
                var width=document.body.offsetWidth;                //获取浏览器宽度
                var bro_colum=Math.floor(width/(pic_width+20));     //计算列数
				oul.setAttribute('id','water');                     //给予id为water
                for(var i=0;i<bro_colum;i++){                       //循环创建li对象
                    var oli=document.createElement('li');
                    oul.appendChild(oli);
                }
				document.body.appendChild(oul);                     
			}
			/* 获取图片 */
            function loadPic(){
                var ajax=getAjax();                                             //获取ajax对象
                ajax.open('GET','data.php?from='+from+'&num='+pic_num,true); 
                ajax.send();
                ajax.onreadystatechange=function(){
                    if(ajax.readyState==4 && ajax.status==200){
						process(ajax.responseText);                            //获取服务器端传回的json字符串,调用一个方法进行处理
                    }
                }
			}
			/* 处理json字符串,将图片插入到页面中 */
			function process(jsonText){
                var obj=eval('('+jsonText+')');               //生成对象列表
                var oul=document.getElementById('water');     //获取id为water的ul对象
                for(var i=0;i<obj.length;i++){                //利用遍历对每张图片进行处理
                    var oProduct=obj[i];                      //获取图片对象
					/* 利用算法遍历ul下面的所有li高度,找到高度最短的一个li,向里面插入图片 */
					iHeight=-1; 
                    for(var j=0;j<oul.childNodes.length;j++){
                        iTempHeight=oul.childNodes[j].offsetHeight;
                        if(iHeight==-1 || iHeight>iTempHeight){
                            iHeight=iTempHeight;
                            var oli=oul.childNodes[j];
                        }
                    }
                    odiv=document.createElement('div');
                    odiv.innerHTML='<img src="./uploads/'+oProduct.image+'"/><br/>'+oProduct.title;
                    oli.appendChild(odiv);
                }

            }
            function getAjax(){
                var xmlhttp;
                   if (window.XMLHttpRequest){
                       // code for IE7+, Firefox, Chrome, Opera, Safari
                       xmlhttp=new XMLHttpRequest();
                   }else{
                       // code for IE6, IE5
                       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                   }
                   return xmlhttp;
               }
            
        </script>
    </head>
<body>
</body>
</html>

 
<?php
	/* 
	 * 数据库中的数据为 
	 * id   image   title
	 * 1    1.jpg   something
	 * 2    2.jpg   something
	 * ...
	 * 总共有20个图片 1.jpg - 20.jpg 对应uploads文件夹中的图片名
	 *
	 */

    $arr=array();
    mysql_connect('localhost','root','root');
    mysql_select_db('water');
    $sql="select image,title from pic limit {$_GET['from']},{$_GET['num']}";
    $result=mysql_query($sql);
    if($result && mysql_num_rows($result)>0){
        while($data=mysql_fetch_assoc($result)){
            $arr[]=$data;
        }
    }
    $str=json_encode($arr);
    echo $str;
?>

嗯 这些就两个一个,就是下边这个我们从数据库中取出数据,然后用json 的方式,传给前台,整个流程是ajax的异步传输 嗯 今天就先说道这里,嗯时间不是那么充足,谢谢大家的支持,欢迎转载,转载请注明来自微度网络-网络技术中心http://yun.widuu.com

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部