国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

jQuery向下滾動即時加載內容實現的瀑布流效果

2024-05-06 16:27:28
字體:
來源:轉載
供稿:網友
下拉滾動條或鼠標滾輪滾動到頁面底部時, 動態即時加載新內容,通過本文給大家介紹jQuery向下滾動即時加載內容實現的瀑布流效果,感興趣的朋友參考下
 

下拉滾動條或鼠標滾輪滾動到頁面底部時, 動態即時加載新內容。

后臺用 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(iua1024@gmail.com) */ $(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; i<l; i++)     {      oProduct = json[i];      // 找出當前高度最小的列, 新內容添加到該列      iHeight = -1;      $('#stage li').each(function(){       iTempHeight = Number( $(this).height() );       if(iHeight==-1 || iHeight>iTempHeight)       {        iHeight = iTempHeight;        $row = $(this);       }      });      $item = $('<div><img src="'+oProduct.image+'" border="0" ><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"><?php foreach ($xiaohuaList as $xiaohua):?><?php $q_id=$xiaohua->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" aria-hidden="true"></span><strong class="color-5 fx_t_<?php echo $q_id;?>"><?php echo CHtml::encode($xiaohua->title);?></strong></div><div class="padding-t-5 fx_c_<?php echo $q_id;?>"><?php echo $xiaohua->content;?></div><div class="padding-t-5 text-right"><span onclick="fx(<?php echo $q_id;?>);" class="fx cursor_p" data-id="<?php echo $q_id;?>"><span class="g-bg glyphicon glyphicon-share-alt margin-r-5" aria-hidden="true"></span>分享</span></div></div><?php endforeach;?></div><script>var opt={getResource:function(index,render){//index為已加載次數,render為渲染接口函數,接受一個dom集合或jquery對象作為參數。通過ajax等異步方法得到的數據可以傳入該接口進行渲染,如 render(elem)var html='';var _url='<?php echo $this->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" aria-hidden="true"></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 onclick="fx('+q_id+');" class="fx cursor_p" data-id="'+q_id+'"><span class="g-bg glyphicon glyphicon-share-alt margin-r-5" aria-hidden="true"></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; display:inline-block; *display:inline;zoom:1; 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(num<1){ num=1; } //保證至少有一列return num;}function render(elements,fadein){//渲染元素if(!$(elements).length) return;//沒有元素var $columns = waterfall.$columns;$(elements).each(function(i){if(!setting.auto_imgHeight||setting.insert_type==2){//如果給出了圖片高度,或者是按順序插入,則不必等圖片加載完就能計算列的高度了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);//插入元素}return true;//continue}if($(this)[0].nodeName.toLowerCase()=='img'||$(this).find(setting.img_selector).length>0){//本身是圖片或含有圖片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.insert_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()<min){min=$(this).outerHeight();min_key=i;}});return min_key;}function getElements(){//獲取資源$.waterfall.load_index++;return setting.getResource($.waterfall.load_index,public_render);}waterfall._scrollTimer=null;//延遲滾動加載計時器function onScroll(){//滾動加載clearTimeout(waterfall._scrollTimer);waterfall._scrollTimer=setTimeout(function(){var $lowest_column=waterfall.$columns.eq(calculateLowest());//最短列var bottom=$lowest_column.offset().top+$lowest_column.outerHeight();//最短列底部距離瀏覽器窗口頂部的距離var scrollTop=document.documentElement.scrollTop||document.body.scrollTop||0;//滾動條距離var windowHeight=document.documentElement.clientHeight||document.body.clientHeight||0;//窗口高度if(scrollTop>=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歡迎提出,VeVb武林網小編會在第一時間和大家聯系的。謝謝!



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈溪市| 龙胜| 离岛区| 顺义区| 丹凤县| 棋牌| 息烽县| 衡南县| 北京市| 兴安盟| 崇义县| 德钦县| 铜川市| 东乡族自治县| 安福县| 泌阳县| 桦川县| 望都县| 琼中| 甘谷县| 乐业县| 长岛县| 房产| 梅州市| 苏尼特右旗| 靖宇县| 祁东县| 保德县| 平果县| 前郭尔| 吴江市| 顺昌县| 岳阳市| 当阳市| 郁南县| 铁岭市| 南江县| 巫山县| 离岛区| 曲松县| 鄂托克旗|