美文网首页
瀑布流布局

瀑布流布局

作者: zy懒人漫游 | 来源:发表于2018-02-05 02:13 被阅读0次

这是html,首先先定义一个容器ct,里面的div模拟照片,每张照片的宽度一样,高度不一样

<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<div class="ct">
  <div class="item h1">1</div>
   <div class="item h2">2</div>
   <div class="item h3">3</div>
   <div class="item h2">4</div>
   <div class="item h1">5</div>
   <div class="item h3">6</div>
   <div class="item h2">7</div>
   <div class="item h2">8</div>
   <div class="item h3">9</div>
   <div class="item h1">10</div>
   <div class="item h1">11</div>
   <div class="item h2">12</div>
   <div class="item h2">13</div>
   <div class="item h1">14</div>
   <div class="item h2">15</div>
</div>
</body>
</html>
function waterFull() {
  var $ctWidth = $('.ct').width(), //获取容器宽度
    $nodeWidth = $('.item').width(), //获取每个节点宽度
    colLength = parseInt($ctWidth / $nodeWidth), //获取页面每一行数量
    itemArr = []; //初始化数组
  for (var i = 0; i < colLength; i++) {
    itemArr[i] = 0; //遍利数组
  }
  $('.item').each(function() {
    var minValue = Math.min.apply(null, itemArr); //获取最小值
    var minIndex = itemArr.indexOf(minValue); //获取最小的索引值
    $(this).css({ //定义位置
      top: itemArr[minIndex], //
      left: $(this).outerWidth(true) * minIndex
    });
    itemArr[minIndex] += $(this).outerHeight(true);
  });
}

1、定义好瀑布流函数,
2、然后获取容器的宽度,和每个节点的宽度,因为我们要得到容器里面有几列,初始化数组,让item为0
3、遍历节点数组
4、通过Math.min.apply(null, itemArr)获取到最小值,和最小值的下标
5、最上面开始摆放最小值的下标对应的值,往左偏移的距离是最小的那个的宽度
6、数组的最小值的高度变化

最后还可以优化下代码,将代码进行封装

var Render = (function () {
      function init() {
        waterFull();
        $(window).resize(function () { //窗口尺寸每次变化,执行一次瀑布流
          waterFull();
        });
      }
      function waterFull() {
        var $ctWidth = $('.ct').width(),//获取容器宽度
          $nodeWidth = $('.item').width(),//获取每个节点宽度
          colLength = parseInt($ctWidth / $nodeWidth),//获取页面每一行数量
          itemArr = [];//初始化数组
        for (var i = 0; i < colLength; i++) {
          itemArr[i] = 0;//便利数组
        }
        $('.item').each(function () {
          var minValue = Math.min.apply(null, itemArr);//获取最小值
          var minIndex = itemArr.indexOf(minValue);//获取最小的索引值
          $(this).css({//定义位置
            top: itemArr[minIndex],//
            left: $(this).outerWidth(true) * minIndex
          });
          itemArr[minIndex] += $(this).outerHeight(true);
        });
      }
      return {
        init: init
      };
    })();
    Render.init();

瀑布流布局的实现

相关文章

  • 瀑布流布局 的学习

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

  • 瀑布流、木桶布局

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

  • 瀑布流照片墙布局

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

  • CSS经典布局

    圣杯布局 瀑布流

  • 瀑布流

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

  • 瀑布流布局_木桶布局

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

  • 瀑布流和懒加载结合

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

  • 瀑布流

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

  • 瀑布流

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

  • 瀑布流的三种实现

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

网友评论

      本文标题:瀑布流布局

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