• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

jQuery向下滚动即时加载内容实现的瀑布流效果_PHP

php 搞代码 4年前 (2022-01-25) 24次浏览 已收录 0个评论

下拉滚动条或鼠标滚轮滚动到页面底部时, 动态即时加载新内容。

后台用 json 传输数据, 示例程序中只写了示例数组。数据也只设置了两个属性, 需根据实际应用改写。

页面用了 ul li 做为容器, 每个 li 表示一列

<ul id="stage">  <li></li>  <li></li>  <li></li> PHP和Jquery和ajax实现下拉淡出瀑布流效果(无需插件)  <li></li> </ul> 

JS代码

/* @版本日期: 版本日期: 2012年4月11日 @著作权所有: 1024 intelligence ( http://www.1024i.com ) 获得使用本类库的许可, 您必须保留著作权声明信息. 报告漏洞,意见或建议, 请联系 Lou Barnes([email protected]) */ $(document).ready(function(){  loadMore(); }); $(window).scroll(function(){  // 当滚动到最底部以上100像素时, 加载新内容  if ($(document).height() - $(this).scrollTop() - $(this).height()<100) loadMore(); }); function loadMore() {  $.ajax({   url : 'data.php',   dataType : 'json',   success : function(json)   {    if(typeof json == 'object')    {     var oProduct, $row, iHeight, iTempHeight;     for(var i=0, l=json.length; iiTempHeight)       {        iHeight = iTempHeight;        $row = $(this);       }      });      $item = $('<div><br />'+oProduct.title+'</div>').hide();      $row.append($item);      $item.fadeIn();     }    }   }  }); } 

下面再给大家分享一段代码:PHP Jquery和ajax相结合实现下拉淡出瀑布流效果

我的风格,废话不多说,感兴趣的朋友直接看下文代码:

前台:

<br><?php <br>$category=$this->getMyVal('category',$_GET);<br>$xiaohuaList=Xiaohua::model()->getXiaohao($category); //打开页面默认显示的数据<br>?><br><br><div id="waterfall">id;?><div class="cell m-bg item-h border_h"><div class="border-solid-b padding-b-5 text-center"><span class="g-bg glyphicon glyphicon-sunglasses margin-r-5"></span><strong class="color-5 fx_t_">title);?></strong></div><div class="padding-t-5 fx_c_">content;?></div><div class="padding-t-5 text-right"><span onclick="fx();" class="fx cursor_p" data-id=""><span class="g-bg glyphicon glyphicon-share-alt margin-r-5"></span>分享</span></div></div></div><script>var opt={getResource:function(index,render){//index为已加载次数,render为渲染接口函数,接受一个dom集合或jquery对象作为参数。通过ajax等异步方法得到的数据可以传入该接口进行渲染,如 render(elem)var html='';var _url='createUrl('listXiaohua');?>';$.ajax({type: "get",url: _url,dataType : "json",async:false,success: function(data){for( var i in data){var q_id=data[i].id;html+='<div class="cell m-bg item-h border_h"><div class="border-solid-b padding-b-5 text-center"><span class="g-bg glyphicon glyphicon-sunglasses margin-r-5"></span><strong class="color-5 fx_t_'+q_id+'">'+data[i].title+'</strong></div><div class="padding-t-5 fx_c_'+q_id+'">'+data[i].content+'</div>'+'<div class="padding-t-5 text-right"><span class="fx cursor_p"><span class="g-bg glyphicon glyphicon-share-alt margin-r-5"></span>分享</span></div></div>';}}});return $(html);},column_width:376,column_space:10,auto_imgHeight:true,insert_type:1}$('#waterfall').waterfall(opt);</script> 

后台:

public function actionListXiaohua() {$xiaohuaList=Xiaohua::model()->getXiaohua();//获取笑话信息echo CJSON::encode($xiaohuaList);} 

js:

;(function($){var//参数setting={column_width:240,//列宽column_className:'waterfall_column',//列的类名column_space:2,//列间距cell_selector:'.cell',//要排列的砖块的选择器,context为整个外部容器img_selector:'img',//要加载的图片的选择器auto_imgHeight:true,//是否需要自动计算图片的高度fadein:true,//是否渐显载入fadein_speed:600,//渐显速率,单位毫秒insert_type:1, //单元格插入方式,1为插入最短那列,2为按序轮流插入getResource:function(index){ } //获取动态资源函数,必须返回一个砖块元素集合,传入参数为加载的次数},//waterfall=$.waterfall={},//对外信息对象$waterfall=null;//容器waterfall.load_index=0, //加载次数$.fn.extend({waterfall:function(opt){opt=opt||{};setting=$.extend(setting,opt);$waterfall=waterfall.$waterfall=$(this);waterfall.$columns=creatColumn();render($(this).find(setting.cell_selector).detach(),false); //重排已存在元素时强制不渐显waterfall._scrollTimer2=null;$(window).bind('scroll',function(){clearTimeout(waterfall._scrollTimer2);waterfall._scrollTimer2=setTimeout(onScroll,300);});waterfall._scrollTimer3=null;$(window).bind('resize',function(){clearTimeout(waterfall._scrollTimer3);waterfall._scrollTimer3=setTimeout(onResize,300);});}});function creatColumn(){//创建列waterfall.column_num=calculateColumns();//列数//循环创建列var html='';for(var i=0;i<waterfall.column_num;i++){html+='<div class="'+setting.column_className+'" style="width:'+setting.column_width+'px;margin-left:'+setting.column_space/2+'px;margin-right:'+setting.column_space/2+'px;vertical-align:top;overflow:hidden"></div>';}$waterfall.prepend(html);//插入列return $('.'+setting.column_className,$waterfall);//列集合}function calculateColumns(){//计算需要的列数var num=Math.floor(($waterfall.innerWidth())/(setting.column_width+setting.column_space));if(num0){//本身是图片或含有图片var image=new Image;var src=$(this)[0].nodeName.toLowerCase()=='img'?$(this).attr('src'):$(this).find(setting.img_selector).attr('src');image.onload=function(){//图片加载后才能自动计算出尺寸image.onreadystatechange=null;if(setting.insert_type==1){insert($(elements).eq(i),setting.fadein&&fadein);//插入元素}else if(setting.insert_type==2){insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素}image=null;}image.onreadystatechange=function(){//处理IE等浏览器的缓存问题:图片缓存后不会再触发onload事件if(image.readyState == "complete"){image.onload=null;if(setting.insert_type==1){insert($(elements).eq(i),setting.fadein&&fadein);//插入元素}else if(setting.insert_type==2){insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素}image=null;}}image.src=src;}else{//不用考虑图片加载if(setting.i<p style="color:transparent">本文来源gao!%daima.com搞$代*!码$网3</p><strong>搞代gaodaima码</strong>nsert_type==1){insert($(elements).eq(i),setting.fadein&&fadein);//插入元素}else if(setting.insert_type==2){insert2($(elements).eq(i),i,setting.fadein&&fadein);//插入元素}}});}function public_render(elems){//ajax得到元素的渲染接口render(elems,true);}function insert($element,fadein){//把元素插入最短列if(fadein){//渐显$element.css('opacity',0).appendTo(waterfall.$columns.eq(calculateLowest())).fadeTo(setting.fadein_speed,1);}else{//不渐显$element.appendTo(waterfall.$columns.eq(calculateLowest()));}}function insert2($element,i,fadein){//按序轮流插入元素if(fadein){//渐显$element.css('opacity',0).appendTo(waterfall.$columns.eq(i%waterfall.column_num)).fadeTo(setting.fadein_speed,1);}else{//不渐显$element.appendTo(waterfall.$columns.eq(i%waterfall.column_num));}}function calculateLowest(){//计算最短的那列的索引var min=waterfall.$columns.eq(0).outerHeight(),min_key=0;waterfall.$columns.each(function(i){if($(this).outerHeight()=bottom-windowHeight){render(getElements(),true);}},100);}function onResize(){//窗口缩放时重新排列if(calculateColumns()==waterfall.column_num) return; //列数未改变,不需要重排var $cells=waterfall.$waterfall.find(setting.cell_selector);waterfall.$columns.remove();waterfall.$columns=creatColumn();render($cells,false); //重排已有元素时强制不渐显}})(jQuery); 

以上代码分为两部分给大家介绍了PHP和Jquery和ajax实现下拉淡出瀑布流效果,代码比较简单,附有注释,如有bug欢迎提出,小编会在第一时间和大家联系的。谢谢!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:jQuery向下滚动即时加载内容实现的瀑布流效果_PHP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址