实现图片瀑布流布局(两列)

样式

<style>
ul{
   width: 100%;
   margin: 0 auto;
}
ul li{
  width: 50%;
}
ul li div{
  width: 100%;
  margin-bottom: 10px
}
img{
  width: 100%;
}
</style>

HTML

<ul id="content">
   <li class="box">
      <div>
         <span>1</span>
         <img src="/Public/img/shareImg1.png" οnlοad="water()">
         <span>432票</span>
         <span>点击投票/已投票</span>
     </div>
  </li>
    <li class="box">
      <div>
         <span>1</span>
         <img src="/Public/img/shareImg1.png" οnlοad="water()">
         <span>432票</span>
         <span>点击投票/已投票</span>
     </div>
  </li>
    <li class="box">
      <div>
         <span>1</span>
         <img src="/Public/img/shareImg1.png" οnlοad="water()">
         <span>432票</span>
         <span>点击投票/已投票</span>
     </div>
  </li>
</ul>

脚本:

<script type="text/javascript">
// 瀑布流布局
function water(){
  var arrBox=$('#content').children('.box');// box对象
  var arrBoxH=[];//数组,用于存储左侧列中的所有块框相加的高度
  var arrBoxR=[];//数组,用于存储右侧列中的所有块框相加的高度
  for(var i=0;i<arrBox.length;i++){ //遍历box
    var boxH=arrBox.eq(i).innerHeight(); //获得box的高度
    if(i==0){
      arrBox.eq(i).addClass("left"); //第一行中的第一个块box添加左浮动(left是自己写好的有float:left属性的选择器名)
      arrBoxH[i]=boxH; //第一行中的第一个块box 先添加进数组arrBoxH
    }else if(i==1){
      arrBox.eq(i).addClass("right");//第一行中的第一个块box添加右浮动
      arrBoxR[i]=boxH; //第一行中的第二个个块box 先添加进数组arrBoxR
    }else{
      var leftNum = arrBoxH.reduce(function (x, y) {
        return x + y;
      });//计算左侧列的高度
      var rightNum = arrBoxR.reduce(function (x, y) {
        return x + y;
      });//计算右侧列的高度
      if(leftNum > rightNum) //比较两侧高度大小,决定为该box添加左浮动还是右浮动
      {
        arrBox.eq(i).removeClass();
        arrBox.eq(i).addClass("box right"); //左侧较高为该box添加右浮动
        arrBoxR[i]=boxH; //将高度添加在右侧数组
      }else {
        arrBox.eq(i).removeClass();
        arrBox.eq(i).addClass("box left"); //右侧较高为该box添加左浮动
        arrBoxH[i]=boxH; //将高度添加在左侧数组
      }
    }
  }
}
</script>

转载于:https://www.cnblogs.com/cenfengtao/p/10058394.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值