美文网首页
瀑布流布局

瀑布流布局

作者: 5吖 | 来源:发表于2018-12-28 00:03 被阅读0次

一、定义

宽度相同,而高度是随机的布局

二、实现方式

1、设置图片宽度一致,高度可以不一致(注:图片样式必须得加上position:absolute,因为js 是靠定位来控制其位置)

2、 初始化一个数组,存储每一列的高度(数组的长度是布局的列数),并且给每个下标赋值为0

3、 计算出一排的列表个数(容器宽度除以元素宽度)

4、循环每个元素, 循环的内部再循环列数组,判断哪一列元素的高度最小,就将下一个元素放到该列

5、 再判断放入该元素之后所形成的新的整排元素内,哪一列元素最短,再把下一个元素放置该列,以此类推

6、 最后当图片加载完成,所有图片依次放置在最小的列数下面

三、代码实现

var colCount //定义列数
var colHeightArr = [] //存放列的高度数组,该数组的长度为 colCount
var imgWidth = $('.waterfall img').outerWidth(true)//单张图片宽度
        
colCount = Math.floor($('.waterfall').width()/ imgWidth) //获取列数  

for(var i = 0; i<colCount; i++){
  colHeightArr[i] = 0 
}//[0,0,0]

//只有当页面中的图片资源全部加载完毕后,才能读到图片的真实高度
$('.waterfall img').on('load',function(){// 加载之后去处理
   
   var minValue = colHeightArr[0] //定义最小高度
   var minIndex = 0 //定义最小高度的下标
   
   for(var i = 0; i< colCount; i++){ //遍历 从数组找到最小值及下标
     if(colHeightArr[i] < minValue){
        minValue = colHeightArr[i] //真正的最小值是最小高度数组中的值
        minIndex = i //真正的最小值的下标是当前下标
     }
   }
  
  $(this).css({//图片的位置
    top: minValue,
    left: minIndex*imgWidth
  })
  console.log(colHeightArr[minIndex])
  colHeightArr[minIndex] += $(this).outerHeight(true) // 整列的值
})

  //当窗口大小重置之后,重新执行
  $(window).on('resize',function(){
    reset()
  })

  //当窗口加载完毕,执行瀑布流
  $(window).on('load',function(){
    reset()
  })

  //定义reset函数
  function reset(){
    var colHeightArr= []
    colCount = Math.floor($('.waterfall').width()/imgWidth)
    for(var i = 0 ; i < colCount; i++){
      colHeightArr[i] = 0
    }
    $('.waterfall img').each(function(){
      var minValue = colHeightArr[0]
      var minIndex = 0
      for(var i = 0 ; i < colCount; i ++){
        if(colHeightArr[i] < minValue){
          minValue = colHeightArr[i]
          minIndex = i
        }
      }

      $(this).css({//图片的位置
         top: minValue,
         left: minIndex*imgWidth
      })
      colHeightArr[minIndex] += $(this).outerHeight(true)
    })
  }

demo 地址 http://js.jirengu.com/zuxeh

相关文章

  • 瀑布流布局 的学习

    1- 实现瀑布流布局效果 瀑布流效果瀑布流代码木桶布局效果木桶布局代码瀑布流布局 2- 实现一个新闻瀑布流新闻...

  • 瀑布流、木桶布局

    瀑布流 瀑布流效果代码 木桶布局 木桶布局效果(加载有点慢)代码

  • 瀑布流照片墙布局

    title: 瀑布流照片墙布局 瀑布流概念 瀑布流布局是错落式的布局方式。它有一个特点,整个布局以列为单位,下一个...

  • CSS经典布局

    圣杯布局 瀑布流

  • 瀑布流

    瀑布流布局瀑布流jsonp新闻页

  • 瀑布流布局_木桶布局

    题目1: 实现一个瀑布流布局效果 瀑布流 题目2:实现木桶布局效果 木桶布局 题目3:**实现一个新闻瀑布流新闻网...

  • 瀑布流和懒加载结合

    实现一个瀑布流布局效果 瀑布流

  • 瀑布流

    什么是瀑布流: 欣赏 pinterest 样式分析 瀑布流,又被称作为瀑布流式布局,是一种比较流行的网站页面布局方...

  • 瀑布流

    1、什么是瀑布流 瀑布流,又称瀑布流式布局。是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚...

  • 瀑布流的三种实现

    先来欣赏三个瀑布流的网站 pinterest 淘宝爱逛街 蘑菇街 什么是瀑布流? 瀑布流,又称瀑布流式布局。 这种...

网友评论

      本文标题:瀑布流布局

      本文链接:https://www.haomeiwen.com/subject/quarlqtx.html