bootstrap瀑布流代码
1 <extend name="Base/common" /> 2 <block name="search-cate"> <include file="Public/jlbnav" /></BLOCK> 3 <block name="content"> 5 <div class="container mt20"> 6 <div class="container-fluid" id="masonry"> 7 8 </div> 9 10 <div id="masonry_ghost" class="hide"> 11 <volist name="list" id="vo"> 12 <div class="thumbnail"> 13 <div class="imgs"> 14 <input type="hidden" value="/{$vo.thumb}"> 15 </div> 16 <div class="caption"> 17 <div class="title">{$i}简单OA管理系统</div> 18 <div class="content"> 19 20 </div> 21 <div class="author">by <a target="_blank" href="">小小生</a></div> 22 </div> 23 </div> 24 </volist> 25 26 </div> 27 </div> 28 加bootstrap jquery js 29 <script src="http://cdnjs.cloudflare.com/ajax/libs/masonry/3.2.2/masonry.pkgd.js"></script> 30 <script src="http://fineui.com/lib/imagesloaded.pkgd.min.js"></script> 31 <script src="http://fineui.com/lib/lightbox-2.6.min.js"></script> 32 <script> 33 $(function() { 34 35 var ghostNode = $('#masonry_ghost').find('.thumbnail'), i, ghostIndexArray = []; //定义变量 36 var ghostCount = ghostNode.length; 37 38 for(i=0; i<ghostCount; i++){ 39 ghostIndexArray[i] = i; 40 } 41 ghostIndexArray.sort(function(a, b) { 42 if(Math.random() > 0.5) { 43 return a - b; 44 } else { 45 return b - a; 46 } 47 }); 48 //上面js是页面打开时自动加载运算,随机排列。 49 var currentIndex = 0; 50 var masNode = $('#masonry');//要加载的div主框架 51 var imagesLoading = false;//标记 52 53 function getNewItems() { 54 var newItemContainer = $('<div/>'); 55 for(var i=0; i<12; i++) { 56 if(currentIndex < ghostCount) { 57 newItemContainer.append(ghostNode.get(ghostIndexArray[currentIndex])); 58 currentIndex++; 59 } 60 } 61 return newItemContainer.find('.thumbnail'); 62 } 63 64 function processNewItems(items) { 65 items.each(function() { 66 var $this = $(this); 67 var imgsNode = $this.find('.imgs'); 68 var title = $this.find('.title').text(); 69 var author = $this.find('.author').text(); 70 title += ' (' + author + ')'; 71 var lightboxName = 'lightbox_'; // + imgNames[0]; 72 73 var imgNames = imgsNode.find('input[type=hidden]').val().split(','); 74 $.each(imgNames, function(index, item) { 75 imgsNode.append('<a href="'+ item +'" data-lightbox="'+ lightboxName +'" title="'+ title +'"><img src="'+ item +'" /></a>'); 76 }); 77 }); 78 } 79 80 function initMasonry() { 81 var items = getNewItems().css('opacity', 0); 82 processNewItems(items); 83 masNode.append(items); 84 85 imagesLoading = true; 86 items.imagesLoaded(function(){ 87 imagesLoading = false; 88 items.css('opacity', 1); 89 masNode.masonry({ 90 itemSelector: '.thumbnail', 91 isFitWidth: true 92 }); 93 }); 94 } 95 96 97 function appendToMasonry() { 98 var items = getNewItems().css('opacity', 0); 99 100 processNewItems(items); 101 masNode.append(items); 102 103 imagesLoading = true; 104 items.imagesLoaded(function(){ 105 imagesLoading = false; 106 items.css('opacity', 1); 107 masNode.masonry('appended', items); 108 }); 109 } 110 111 function ajaxItem(){ 112 var items = $('#masonry_ghost').find('.thumbnail').css('opacity', 0); 113
116 processNewItems(items); 117 masNode.append(items); 118 imagesLoading = true; 119 120 items.imagesLoaded(function(){ 121 122 items.css('opacity', 1); 123 masNode.masonry('appended', items); 124 imagesLoading = false; 125 }); 126 } 127 128 129 initMasonry(); 130 var page =2; //分页 131 var ttt=1; 132 $(window).scroll(function() { 133 if(arguments.callee.timer) clearTimeout(arguments.callee.timer);//解决FIRFOX下滚动多次 134 if($(document).height() - $(window).height() - $(document).scrollTop() < 30) { 135 arguments.callee.timer = setTimeout(getdiv,400); 136 } 137 138 }); 139 140 function getdiv(){ 141 if(!imagesLoading) { 142 $.ajax({ 143 url: '{:U("Tulebu/getsharedata")}', 144 type: 'POST', 145 dataType: 'text', 146 data: {'page': page}, 147 async:false, 148 }) 149 .done(function(data) { 150 if(data.length<2){ 151 imagesLoading = true; 152 return; 153 } 154 $('#masonry_ghost').append(data); 155 page+=1; 156 ajaxItem(); 157 }) 158 .fail(function() { 159 console.log("error"); 160 }) 161 .always(function() { 162 console.log("complete"); 163 }); 164 } 165 } 166 167 168 169 function randomColor() { 170 var rand = Math.floor(Math.random() * 0xFFFFFF).toString(16); 171 for (; rand.length < 6;) { 172 rand = '0' + rand; 173 } 174 return '#' + rand; 175 } 176 177 // var page=0; 178 // function getdata(){ 179 // $.$.post('{:U('Julebu/')}', param1: 'value1', function(data, textStatus, xhr) { 180 // /*optional stuff to do after success */ 181 // }); 182 // } 183 184 185 }); 186 </script> 187 </block>