《PHP應用:thinkPHP實現瀑布流的方法》要點:
本文介紹了PHP應用:thinkPHP實現瀑布流的方法,希望對您有用。如果有疑問,可以聯系我們。
PHP應用本文實例講述了thinkPHP實現瀑布流的辦法.分享給大家供大家參考.具體分析如下:
PHP應用很多人都想做瀑布流的效果,這里告訴大家官網使用的辦法,首先要下載瀑布流的插件jquery.masonry.min.js 地址:http://masonry.desandro.com/index.html里面包含的很多示例.
PHP應用流程:
PHP應用1. 頁面初始化時,調用插件進行一次排版;
PHP應用2. 當用戶將滾動條拖到底部時,用ajax加載一次數據,并排版顯示
PHP應用3. 重復2,直到無數據
PHP應用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>
PHP應用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);?
}
PHP應用注意:通過判斷窗口是否滾動到頁面底部來決定用ajax加載一次數據,如果不做處理,會一下子哀求很多次,所以,要使用條件來限制.
PHP應用這里使用的是往一個元素上賦值 $("#loading").data("on", true);,在哀求期間判斷是true則不繼續哀求,然后在頁面哀求完成后再賦值為false.
PHP應用希望本文所述對大家的ThinkPHP框架程序設計有所贊助.
維易PHP培訓學院每天發布《PHP應用:thinkPHP實現瀑布流的方法》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13548.html