thinkPHP实现瀑布流的方法


Posted in PHP onNovember 29, 2014

本文实例讲述了thinkPHP实现瀑布流的方法。分享给大家供大家参考。具体分析如下:

很多人都想做瀑布流的效果,这里告诉大家官网使用的方法,首先要下载瀑布流的插件jquery.masonry.min.js 地址:http://masonry.desandro.com/index.html里面包含的很多示例.

流程:

1. 页面初始化时,调用插件进行一次排版;

2. 当用户将滚动条拖到底部时,用ajax加载一次数据,并排版显示

3. 重复2,直到无数据

Html代码:

<!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>Insert title here</title>  

<!--样式-->  

<style type="text/css">  

body {margin:40px auto; width:800px; font-size:12px; color:#666;}  

.item{  

border: 1px solid #D4D4D4;  

color: red;  

margin: 0 10px 10px 0;  

padding: 10px;  

position: relative;  

width: 200px;  

}  

.loading-wrap{  

bottom: 50px;  

width: 100%;  

height: 52px;  

text-align: center;  

display: none;  

}  

.loading {  

padding: 10px 10px 10px 52px;  

height: 32px;  

line-height: 28px;  

color: #FFF;  

font-size: 20px;  

border-radius: 5px;  

background: 10px center rgba(0,0,0,.7);  

}  

.footer{  

border: 2px solid #D4D4D4;  

}  

</style>  

<!--样式-->  

</head>  

<body>  

<!--引入所需要的jquery和插件-->  

<script type="text/javascript" src="/test/public/Js/jquery-1.7.2.min.js"></script>  

<script type="text/javascript" src="/test/public/Js/jquery.masonry.min.js"></script>  

<!--引入所需要的jquery和插件-->  

<!--瀑布流-->  

<div id="container" class=" container">  

<!--这里通过设置每个div不同的高度,来凸显布局的效果-->  

<volist name="height" id="vo">  

<div class="item" style="height:{$vo}px;">瀑布流下来了</div>  

<input type="hidden" name="last_id" class="last_id" value="{$vo.id}"/>  

</volist>  

</div>  

<!--瀑布流-->  

<!--加载中-->  

<div id="loading" class="loading-wrap">  

<span class="loading">加载中,请稍后...</span>  

</div>  

<!--加载中-->  

<!--尾部-->  

<div class="footer"><center>我是页脚</center></div>  

<!--尾部-->  

<script type="text/javascript">  

//用于转换unix时间戳  

function unix_to_datetime(unix)   

{  

var now = new Date(parseInt(unix) * 1000);  

return now.toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");  

}  

$(function(){  

//页面初始化时执行瀑布流  

var $container = $('#container');  

$container.masonry({  

itemSelector : '.item',  

isAnimated: true  

});  

//用户拖动滚动条,达到底部时ajax加载一次数据  

var loading = $("#loading").data("on", false);//通过给loading这个div增加属性on,来判断执行一次ajax请求  

$(window).scroll(function(){  

if(loading.data("on")) return;  

if($(document).scrollTop() > $(document).height()-$(window).height()-$('.footer').height()){//页面拖到底部了  

//加载更多数据  

loading.data("on", true).fadeIn(); //在这里将on设为true来阻止继续的ajax请求  

  

//获取最后一个id  

var lastid = $('.last_id:last').val();  

$.get(  

"getMore", //要跳转的页面  

{lastid:lastid},//传值  

function(data){  

//获取到了数据data,后面用JS将数据新增到页面上  

var getdata = data.data;  

var html = "";  

if($.isArray(getdata)){  

$.each(data.data,function(i,item) {  

html += "<div class=\"item\" style=\"height:"+data[i]+"px;\">瀑布又流下来了</div>";  

});  

var $newElems = $(html).css({ opacity: 0 }).appendTo($container);  

$newElems.imagesLoaded(function(){  

$newElems.animate({ opacity: 1 });  

$container.masonry( 'appended', $newElems, true );   

});  

//一次请求完成,将on设为false,可以进行下一次的请求  

loading.data("on", false);  

}  

loading.fadeOut();  

},  

"json"  

);  

}  

});  

});  

</script>  

</body>  

</html>

Action代码:

//初始化的数据  

public function lists(){   

$data = D('Info')->order('id DESC')->limit(10)->select();  

$this->assign('data', $data);  

$this->display();  

}  

//获取一次请求的数据  

public function getMore(){   

//获取最后一个id  

if(!emptyempty($_GET['lastid']))$map['id'] = array('lt', $_GET['lastid']);   

$data = D('Info')->where($map)->order('id DESC')->limit(10)->select();  

$this->ajaxReturn($data);  

}

注意:通过判断窗口是否滚动到页面底部来决定用ajax加载一次数据,如果不做处理,会一下子请求很多次,所以,要使用条件来限制.

这里使用的是往一个元素上赋值 $("#loading").data("on", true);,在请求期间判断是true则不继续请求,然后在页面请求完成后再赋值为false.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
php实现求相对时间函数
Jun 15 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
Yii2 assets清除缓存的方法
May 16 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
yii2安装详细流程
May 23 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
php删除左端与右端空格的方法
Nov 29 #PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 #PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 #PHP
Sublime里直接运行PHP配置方法
Nov 28 #PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 #PHP
PHP使用get_headers函数判断远程文件是否存在的方法
Nov 28 #PHP
php的mssql数据库连接类实例
Nov 28 #PHP
You might like
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
浅析Python多线程下的变量问题
2015/04/28 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python实现同一局域网下传输图片
2020/03/20 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
数据库方面面试题
2012/04/22 面试题
小学生班会演讲稿
2014/01/09 职场文书
化妆品促销方案
2014/02/24 职场文书
公司演讲稿开场白
2014/08/25 职场文书
团拜会主持词
2015/07/04 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
python 常用的异步框架汇总整理
2021/06/18 Python