瀑布式div布局

瀑布式div布局如下:


首先,让每个div布局是绝对定位,只由js动态给这些div添加top和left属性。
那top和left的值如何定呢,算法如下:
把这个瀑布看成三列,c1,c2,c3。一开始没div时,它们的height值为0,left值为0,350,700,当第1个div添加时,比较c1、c2和c3,找出height值最小的,然后height值最小的c1的height值和left值分别赋给div的top值和left值,然后c1的height为height+$(thisdiv).height();

var c = [ new cInfo(0, 0), new cInfo(0, 350), new cInfo(0, 700) ]; //三列  全局变量
function getMin() {
 var cmin = c[0];
 if (c[1].height < cmin.height)
 cmin = c[1];
 if (c[2].height < cmin.height)
 cmin = c[2];
 return cmin;
}
function cInfo(height, left) {
 this.height = height;
 this.left = left;
}
关键代码
 //定位
 var cmin = getMin();
 var top = cmin.height;
 var left = cmin.left;
 var $pin = $(newRecord);  // 新的div
 $pin.css("top", top);
 $pin.css("left", left);
 $pin.attr("data-id", left == "0" ? 0 : (left == "350" ? 1 : 2));    //标记是第几列
 $dataContainer.append($pin);  //添加div
 if (commentCount > 3) {   //评论功能,不是本章重点
 var $more = $pin.find(".more").clone(true);
 $pin.append($more);
 $more.show();
 }
 cmin.height = cmin.height + $pin.height()+30;  //30为评论功能的高度







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值