PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程
PHP结合Jquery和ajax实现瀑布流特效,jqueryajax
不废话,直接上代码,
前台:
<?php $category=$this->getMyVal('category',$_GET); $xiaohuaList=Xiaohua::model()->getXiaohao($category); //打开页面默认显示的数据 ?> <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);
好了,全部完成了。
再给大家分享一个吧
<!doctype html> <html> <head> <meta charset="utf-8"> <title>定宽Jquery+AJAX+JSON瀑布流布局(每行代码都有详细注释)</title> <style type="text/css"> body, ul, li, h3 { margin: 0; padding: 0; list-style: none; font: bold 12px "微软雅黑"; } /*瀑布流布局样式*/ #lxf-box { position: relative; width: 1000px; margin:0 auto;} #lxf-box li { background: #fff; border: solid 1px #ccc; text-align: center; padding: 10px; float: left;} h3 { padding-top: 8px; } img { width: 200px; height: auto; display: block; border: 0 } /*css3动画 注由于是css3制作的所以兼容性不保证 要想兼容性好 请自己做成gif动画加载图*/ /*li { -webkit-transition: all .7s ease-out .1s; -moz-transition: all .7s ease-out; -o-transition: all .7s ease-out .1s; transition: all .7s ease-out .1s }*/ #loading { display:none; line-height: 30px; background: #000; color:#fff; text-align: center; height: 30px; width: 100%; position:fixed; bottom:0; opacity:0.8;} </style> <script src="/templets/niu/js/jquery.min.js" type="text/javascript"></script> </head> <body> <h1 id="预览无效果请刷新">预览无效果请刷新</h1> <ul id="lxf-box"> <li><a href="div_css/342.html"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/1-120Q411544TX.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/ajax/237.html"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120801/1-120P1223013157.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/js_ad/271.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120808/1-120PP00915a2.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/js_texiao/312.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120812/1-120Q2150022G8.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/js_pic/191.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120722/1-120H2144003129.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/js_pic/318.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120812/1-120Q2161941b2.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/div_css/341.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/1-120Q4113240U2.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/div_css/350.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/125411K11-2.png" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/div_css/350.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/1254113249-12.png" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/div_css/349.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/12500a292-1.png" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> <li>img src="/uploads/allimg/120813/1-120Q3145U0938.jpg"> <h3 id="图片标题">图片标题</h3> </li> <li><a href="/div_css/344.html/"><img src="/static/imghw/default1.png" data-src="/uploads/allimg/120814/12353B521-0.jpg" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a> <h3 id="图片标题">图片标题</h3> </li> </ul> <div id="loading">正在加载……</div> <script> /* 原理:1.把所有的li的高度值放到数组里面 2.第一行的top都为0 3.计算高度值最小的值是哪个li 4.把接下来的li放到那个li的下面 编写时间:2012年6月9日 */ function iiwnet(){//定义成函数便于调用 var wrap = document.getElementById("lxf-box") var margin = 10;//这里设置间距 var li=$("li");//这里是区块名称 var li_W = li[0].offsetWidth+margin;//取区块的实际宽度(包含间距,这里使用源生的offsetWidth函数,不适用jQuery的width()函数是因为它不能取得实际宽度,例如元素内有pandding就不行了) var h=[];//记录区块高度的数组 li.css("position","absolute"); var n = wrap.offsetWidth/li_W|0;//容器的宽度除以区块宽度就是一行能放几个区块 for(var i = 0;i < li.length;i++) {//有多少个li就循环多少次 li_H = li[i].offsetHeight;//获取每个li的高度 if(i < n) {//n是一行最多的li,所以小于n就是第一行了 h[i]=li_H;//把每个li放到数组里面 li.eq(i).css("top",0);//第一行的Li的top值为0 li.eq(i).css("left",i * li_W);//第i个li的左坐标就是i*li的宽度 } else{ min_H =Math.min.apply(null,h) ;//取得数组中的最小值,区块中高度值最小的那个 minKey = getarraykey(h, min_H);//最小的值对应的指针 h[minKey] += li_H+margin ;//加上新高度后更新高度值 li.eq(i).css("top",min_H+margin);//先得到高度最小的Li,然后把接下来的li放到它的下面 li.eq(i).css("left",minKey * li_W); //第i个li的左坐标就是i*li的宽度 } $("h3").eq(i).text("编号:"+i+",高度:"+li_H);//把区块的序号和它的高度值写入对应的区块H3标题里面 $("li").animate({opacity:1}); } } /* 使用for in运算返回数组中某一值的对应项数(比如算出最小的高度值是数组里面的第几个) */ function getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}} /*这里一定要用onload,因为图片不加载完就不知道高度值*/ window.onload = function() {iiwnet();}; /*浏览器窗口改变时也运行函数*/ window.onresize = function() {iiwnet();}; /**********************************************************************/ /*无限加载*/ var i=1; function getMore(){ $("#loading").show(); var json = "http://www.bkjia.com/images/jstx/img.js"; $.getJSON(json, function(data){ $.each(data,function(i){ var url=data[i].url; var html="<li style='opacity:0'><a href='http://www.bkjia.com/'><img src="/static/imghw/default1.png" data-src="+url+" class="lazy" alt="PHP结合Jquery和ajax实现瀑布流特效,jqueryajax_PHP教程" ></a><h3 id="图片标题">图片标题</h3></li>"; $("#lxf-box").append(html); $("#loading").hide(); }); iiwnet(); i=1 }); }; /*滚动到底部的时候*/ $(window).bind("scroll",function(){ if( $(document).scrollTop() + $(window).height() > $(document).height() - 10 && i==1) { i=0; getMore(); } }); </script> </body> </html> <p align="center"><font color=red>如果运行效果无非显示请点击【刷新页面】</font><br/>【<a href="http://www.bkjia.com" target="_blank"><font color="#666666">返回首页</font></a>】【<a href="javascript:this.location.reload()"><font color="#666666">刷新本页</font></a>】【<a href="javascript:window.scroll(0,0)"><font color="#666666">返回顶部</font></a>】【<a href="javascript:window.close()"><font color="#666666">关闭本页</font></a>】</p>
您可能感兴趣的文章:
- jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
- jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
- PHP和Jquery和ajax实现下拉淡出瀑布流效果(无需插件)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









Dreamweaver에서 텍스트 위치 조정은 다음 단계에 따라 완료할 수 있습니다. 텍스트를 선택하고 텍스트 위치 조정기를 사용하여 가로 조정을 수행합니다. 왼쪽 정렬, 오른쪽 정렬, 가운데 정렬 2. 세로 조정 수행: 위쪽 정렬, 아래쪽 정렬, 세로; 3. Shift 키를 누르고 화살표 키를 사용하여 위치를 미세 조정합니다. 4. 바로 가기 키를 사용하여 빠르게 정렬합니다. 왼쪽 정렬(Ctrl/Cmd + L), 오른쪽 정렬(Ctrl/Cmd + R), 가운데 정렬 (Ctrl/Cmd + C).

Dreamweaver를 사용하여 비디오 포함: 비디오 요소를 삽입합니다. 동영상 파일을 선택하여 업로드하세요. 비디오 유형, URL, 크기, 자동 재생 및 컨트롤을 설정합니다. 영상을 삽입하세요. 선택 사항: 비디오 모양을 사용자 정의합니다.

Dreamweaver에서 줄 간격 조정은 텍스트를 선택하고, 단락 패널을 열고, 줄 간격 옵션을 조정하고, 마지막으로 확인을 클릭하여 변경 사항을 적용하는 4단계 과정으로 이루어집니다.

Dreamweaver에 그림을 삽입하려면 삽입 메뉴를 클릭하고 이미지를 선택한 다음 그림 파일을 찾아 선택합니다. 다른 방법으로는 파일을 끌어서 놓거나 HTML 코드를 직접 삽입하는 방법이 있습니다. 속성 조정에는 크기 변경, 정렬, 테두리 추가 및 대체 텍스트 입력이 포함됩니다.

속성 패널을 사용하여 글꼴, 크기 및 색상을 선택하여 Dreamweaver에서 글꼴을 설정할 수 있습니다. CSS를 사용하여 전체 웹사이트 또는 특정 요소에 대한 글꼴을 설정하세요. "font" 태그를 사용하여 HTML 코드에서 직접 글꼴을 설정하세요.

Dreamweaver에서 웹 페이지를 내보내려면 다음 단계가 필요합니다. HTML 파일 내보내기: 파일 메뉴에서 내보내기를 선택하고 HTML을 선택한 다음 파일 이름과 위치를 선택하고 저장을 클릭합니다. CSS 및 JavaScript 파일 내보내기: 파일 메뉴에서 내보내기를 선택하고 CSS 또는 JavaScript를 선택한 다음 파일 이름과 위치를 선택하고 저장을 클릭합니다. 이미지 내보내기: 이미지를 마우스 오른쪽 버튼으로 클릭하고 "내보내기"를 선택한 다음 이미지 형식과 파일 이름을 선택하고 "저장"을 클릭합니다.

Dreamweaver를 중국어로 설정하려면 다음 단계를 따르십시오. Dreamweaver를 열고 환경 설정에서 사용자 인터페이스 언어를 중국어 간체 또는 중국어 번체로 변경하고 Dreamweaver 도움말 메뉴 항목을 확인하여 언어 설정을 확인하십시오.

Dreamweaver에서 텍스트를 들여쓰는 방법에는 네 가지가 있습니다. 단일 단락 들여쓰기: 서식 > 단락 > 들여쓰기 여러 단락 들여쓰기: 단락 패널에서 들여쓰기 값 설정 스타일 사용: 단락 스타일 대화 상자에서 들여쓰기 값 설정 들여쓰기 키 사용: Tab 오른쪽으로 들여쓰려면 키, 왼쪽으로 들여쓰려면 Shift + Tab 키
