重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
itemSelector class选择器,默认'.item',这个表示每个块的选择器
创新互联公司自2013年起,先为互助等服务建站,互助等地企业,进行企业商务咨询服务。为互助企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
columnWidth 一列的宽度
isAnimated 使用jquery的布局变化,默认true
animationOptions animate属性渐变效果(Object { queue: false, duration: 500 })
gutterWidth 列的间隙 Integer
isFitWidth 自适应浏览器宽度Boolean
isResizableL 是否可调整大小 Boolean
isRTL 使用从右到左的布局 Boolean
2、jquery.infinitescroll,有了瀑布流布局,我们还需要一个动态加载的功能,也就是浏览器滚动条滚动到底部的时候,需要动态加载数据,这里介绍使用分页的方式加载数据,插件名称为jquery.infinitescroll,官网地址为:,详细说明可以到官网查看,这里介绍他的一些核心的参数
itemSelector class选择器,默认'div.post',这个表示上面介绍的瀑布流的块的选择器
nextSelector 表示分页中下一页的选择器,默认为div.navigation a:first
navSelector 表示分页导航的选择器,分页导航会被隐藏
extraScrollPx 滚动条距离底部多少像素的时候开始加载,默认150
dataType 表示动态加载返回数据的格式,默认html
template 表示返回json时,用来生成瀑布流块html代码的模板方法,如果返回是json,那么必须指定这个参数,否则会报错
jquery masonry 瀑布流居中
itemSelector class选择器,默认'.item',这个表示每个块的选择器
columnWidth 一列的宽度
isAnimated 使用jquery的布局变化,默认true
animationOptions animate属性渐变效果(Object { queue: false, duration: 500 })
gutterWidth 列的间隙 Integer
isFitWidth 自适应浏览器宽度Boolean
isResizableL 是否可调整大小 Boolean
isRTL 使用从右到左的布局 Boolean
楼主您好
引入infinitescroll
页面元素
div data-am-widget="list_news" class="am-list-news am-list-news-default" style="margin:0px 10px 0px 10px;"
!--列表标题--
div class="am-list-news-bd"
ul class="am-list block" id="container"/ul
/div
/div
div class="loading" style="text-align:center;"
/div
div id="navigation"
a/a
/div
初始化
var navigationUrl = "xxxx?pageNo=1";
$("#navigation a").attr("href", navigationUrl);
$.ajax({
url: 'xxxx',
type: 'post',
dataType:'json',
success: function(items) {
var html = successCallBack(items);//渲染每一个瀑布流块
$('#container').html(html);
},
error: function() {
alert('加载失败');
}
});
初始化方法调用
$('#container').infinitescroll({
navSelector : "#navigation", //导航的选择器,会被隐藏
nextSelector : "#navigation a", //包含下一页链接的选择器
itemSelector : ".block", //你将要取回的选项(内容块)
debug : true, //启用调试信息
animate : true, //当有新数据加载进来的时候,页面是否有动画效果,默认没有
extraScrollPx : 150, //滚动条距离底部多少像素的时候开始加载,默认150
bufferPx : 40, //载入信息的显示时间,时间越大,载入信息显示时间越短
errorCallback : function() {
//alert('error');
}, //当出错的时候,比如404页面的时候执行的函数
localMode : true, //是否允许载入具有相同函数的页面,默认为false
dataType : 'json',//可以是json
template: function(items) {
itemsTemp = items;
return successCallBack(items);
},
loading : {
img: '${ctx}/images/loading.gif',
msgText : "加载中...",
finishedMsg : '没有新数据了...',
selector : '.loading' // 显示loading信息的div
}
}, function() {
});
我们可以使用 jQuery 的 Masonry 插件来实现这种页面形式,下面介绍一下方法。
1,分别下载 jQuery 与 Masonry ,然后把他们都加载到页面中使用。
加载代码:
script src=""/scriptscript src=""/script
解释:很简单,就是把下载之后的脚本文件嵌入到你想使用瀑布流形式的页面中,注意文件的名称与路径,根据你自己的实际情况修改。
2,页面代码
div id="masonry" class="container-fluid" div class="box"img src=""/div div class="box"img src=""/div div class="box"img src=""/div div class="box"img src=""/div div class="box"img src=""/div .../div
解释:把每个小内容块放在一个拥有相关类的容器里,然后把所有的内容块放在一个大的容器里,这里我们把内容块图片放在一个拥有 .box 类的 div 标签里,然后把他们又使用带有 #masonry ID 的 div 里面,一会儿我们会用 #masonry ID 和 .box 类来触发使用瀑布流。
3,样式代码
.container-fluid { padding: 20px; }.box { margin-bottom: 20px; float: left; width: 220px; } .box img { max-width: 100%}
解释:针对第二步的页面代码,我们需要添加一点样式,.box 类我们添加了浮动属性,还设置了他的宽度。
4,在页面中启用瀑布流形式的脚本代码
$(function() { var $container = $('#masonry'); $container.imagesLoaded(function() { $container.masonry({ itemSelector: '.box', gutter: 20, isAnimated: true, }); });});br
解释:这里我们首先定位想使用瀑布流的大容器是什么,这里就是带有 #masonry ID 的 div 标签,在 var $container = $('#masonry'); 这行代码中定义。然后我们还要说明瀑布流里的每个内容块容器上共同的类是什么,这里就是带有 .box 类的 div 标签,在itemSelector : '.box', 这行代码中定义。
gutter: 20, 这行代码定义了内容块之间的距离是 20 像素,isAnimated: true, 这行代码可以打开动画选项,也就是当改变窗口宽度的时候,每行显示的内容块的数量会有变化,这个变化会使用一种动画效果。
我的一个笨方法:
$(function() { var $objbox = $("#masonry"); var gutter = 25; var centerFunc, $top0; $objbox.imagesLoaded(function() { $objbox.masonry({ itemSelector: "#masonry .box", gutter: gutter, isAnimated: true }); centerFunc = function() { $top0 = $objbox.children("[style*='top: 0']"); $objbox.css("left", ($objbox.width() - ($top0.width() * $top0.length + gutter * ($top0.length - 1))) / 2).parent().css("overflow", "hidden"); }; centerFunc(); }); var tur = true; $(window).resize(function() { if (tur) { setTimeout(function() { tur = true; centerFunc(); }, 1000); tur = false; } });});