完成基本步骤

  1. 1.判断一排能放下几个
  2. 获取窗口的width
  3. 获取盒子的width
  4. num = window/box
  5. 2.根据第一排的高去放第二排
  6. 从最小高度开始放 arr

api

  1. var ww = $(window).width();
  2. var box = $(".item").outerWidth();
  3. var num = Math.floor(ww / box);
  4. $("#app").css({width:num*box+"px"})
  1. width -->content
  2. outerWidth-->content,padding,border
  3. 改变css样式
  4. $(element).css({attr:value})

判断滚动条是否到达底部

  1. $(window).scroll(function(){
  2. var scrollTop = $(window).scrollTop(); //获取滚动条距离顶部的高
  3. var availHeight = $(window).height(); //获取可视区域的高
  4. var dw = $(document).height(); //获取内容区域的高
  5. console.log(dw)
  6. /* 滚动条的高度+可视区域的height = 内容区域的高度 */
  7. })
  8. function isReachBottom(){
  9. }

获取元素距离窗口的距离

  1. 获取元素距离窗口的距离
  2. left: $(element).offset().left;
  3. top: $(element).offset().top;
  1. var w = $(".item").offset().left;
  2. var h = $(".item").offset().top;
  3. console.log($(".item").eq(1)); /* eq 第几个元素的 */

第一步和第二步

  1. /* 1.得到一排能放置几个元素 */
  2. var ww = $(window).width();
  3. var box = $(".item").outerWidth();
  4. var num = Math.floor(ww/box);
  5. /* 2.定义一个数组获取第一排元素的height */
  6. var arr = [];
  7. $(".item").each((index,value)=>{
  8. if(index<num){
  9. console.log(value)
  10. var height = $(value).outerHeight();
  11. arr.push(height)
  12. }
  13. })
  14. console.log(arr);

根据height放置元素

  1. 3.将元素放置在最小高度的位置 同时将数组重置 */
  2. var minHeight = Math.min(...arr);
  3. var index = arr.indexOf(minHeight);
  4. var offsetLeft = $(".item").eq(index).offset().left;
  5. $(value).css({position:"absolute",left:offsetLeft,top:minHeight});
  6. arr[index] = minHeight+$(value).outerHeight();

结合实现瀑布流

  1. css
  2. *{
  3. padding: 0;
  4. margin: 0;
  5. }
  6. .item img{
  7. width:240px;
  8. padding: 5px;
  9. vertical-align: bottom;
  10. }
  11. .item{
  12. float: left;
  13. border: 1px solid #eee;
  14. }
  1. <div id="app">
  2. <div class="item"><img src="images/01.jpg" alt=""></div>
  3. <div class="item"><img src="images/02.jpg" alt=""></div>
  4. <div class="item"><img src="images/03.jpg" alt=""></div>
  5. <div class="item"><img src="images/04.jpg" alt=""></div>
  6. <div class="item"><img src="images/05.jpg" alt=""></div>
  7. <div class="item"><img src="images/06.jpg" alt=""></div>
  8. <div class="item"><img src="images/07.jpg" alt=""></div>
  9. <div class="item"><img src="images/08.jpg" alt=""></div>
  10. <div class="item"><img src="images/09.jpg" alt=""></div>
  11. <div class="item"><img src="images/10.jpg" alt=""></div>
  12. <div class="item"><img src="images/11.jpg" alt=""></div>
  13. <div class="item"><img src="images/12.jpg" alt=""></div>
  14. </div>
  1. <script>
  2. /* 一排能放置几张图片 */
  3. var ww = $(window).width();
  4. var box = $(".item").outerWidth();
  5. var num = Math.floor(ww/box);
  6. var arr = [];
  7. /* 将第一排的盖度放在一个数组中arr */
  8. $(".item").each((index,value)=>{
  9. if(index<num){
  10. var height = $(value).outerHeight();
  11. arr.push(height)
  12. }else{
  13. /* 从盖度最小的地方放置图片 */
  14. var minHeight = Math.min(...arr);
  15. var index = arr.indexOf(minHeight);
  16. var offsetLeft = $(".item").eq(index).offset().left;
  17. $(value).css({position:"absolute",left:offsetLeft,top:minHeight})
  18. arr[index] = minHeight+$(value).outerHeight();
  19. }
  20. })
  21. </script>