jQuery瀑布流布局
Posted samsara-yx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery瀑布流布局相关的知识,希望对你有一定的参考价值。
waterFall.js
/*扩展jquery 的方法,扩展的方法是要操作局部的dom*/
$.fn.waterFall=function(){
var $items=$(this);
var parentWidth=$items.width();//盒子宽度
var $childRen=$items.children(".item");
var width=$childRen.width();//每一个item宽度
var column=5;//列数
var space=(parentWidth-column*width)/(column-1);//间距
//定义的一个临时的存储区,记录每一列的高度.
var arr=[];
$childRen.each(function(index,dom){
var $dom=$(dom);
if(index<column){ //这里是计算前面的5列位置.
$dom.css({
top:0,
left:index*(width+space)
});
arr.push($dom.height());
}else{
//这里是计算后面的元素的位置.
var minIndex=0;
//找到最矮的这一列的高度,以及索引值.
var minHeight=arr[minIndex];
for(var i=0;i<arr.length;i++){
if(minHeight>arr[i]){
minHeight=arr[i];
minIndex=i;
}
}
//找到之后改这个item 的位置.
//找到最矮的一列,然后把这个元素加到最矮的那一列下面去.
$dom.css({
left:minIndex*(width+space),
top:minHeight+space
});
// 这里是把最矮的那一列的高度进行更新,因为你在最矮的这一列添加了元素.
arr[minIndex]=minHeight+space+$dom.height();
}
})
}
html
<div class="items">
<div class="item">
<img src="../imgs/1.png"/>
</div>
<div class="item">
<img src="../imgs/1.png"/>
</div>
</div>
//引入jQuery和上面waterFall.js
<script>
$(".items").waterFall()
</script>
以上是关于jQuery瀑布流布局的主要内容,如果未能解决你的问题,请参考以下文章