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

本文详细介绍了一种使用HTML、CSS和JavaScript实现瀑布流布局的方法。通过动态调整元素位置,确保页面美观且响应式,适用于展示大量图片或信息块的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

样式

<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" onload="water()">
         <span>432票</span>
         <span>点击投票/已投票</span>
     </div>
  </li>
    <li class="box">
      <div>
         <span>1</span>
         <img src="/Public/img/shareImg1.png" onload="water()">
         <span>432票</span>
         <span>点击投票/已投票</span>
     </div>
  </li>
    <li class="box">
      <div>
         <span>1</span>
         <img src="/Public/img/shareImg1.png" onload="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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值