第一次写主要是跟着别人的代码写的。
参考代码和详细讲解 https://github.com/YeXiaoChao/PluginsFromJS/tree/master/Little%20Demos/waterfall
演示效果
代码:
<!DOCTYPE html> <html> <head> <title>test</title> <script src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js"></script> <style type="text/css"> *{padding: 0; margin: 0;} .box{ position: relative; float: left; } .content{ padding: 2px; border: 3px solid #aaa; } .content img{ width: 234px; height: auto; } #container{ background: #eee none scroll repeat 0 0 ; margin: 0 auto; } </style> </head> <body> <div id="container"> <div class="box"> <div class="content"> <img src="images/1.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/7.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/4.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/2.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/6.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/1.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/4.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/2.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/2.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/3.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/2.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/7.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/10.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/1.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/4.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/10.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/9.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/3.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/2.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/5.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/3.jpg"> </div> </div> <div class="box"> <div class="content"> <img src="images/8.jpg"> </div> </div> </div> <script type="text/javascript"> var arr = []; //获取盒子高度 function imgLocation(){ var boxWidth = $(".box:first").width(); //每张图片宽度 var num = Math.floor($(window).width() / boxWidth); //每排图片张数 var width = num * boxWidth + "px"; console.log("num=" + num); $("#container").css("width",width); $(".box").each(function(index,value){ var boxHeight = $(".box").eq(index).height(); //当前盒子高度 if(index < num){ arr[index] = boxHeight; //第一排图片 }else{ var minboxHeight = Math.min.apply(null,arr); //获取最小高度 var minboxIndex = $.inArray(minboxHeight, arr); //找到最小高度图片下标 $(value).css({ "position": "absolute", "top": minboxHeight, "left": $(".box").eq(minboxIndex).position().left }); //重新计算高度 arr[minboxIndex] += $(".box").eq(index).height(); } }) } imgLocation(); function scrollSlide(){ //判断是否需要加载图片 var lastboxHeight = $(".box:last").offset().top + Math.floor($(".box:last").height() / 2); return ($(document).scrollTop()+$(window).height() > lastboxHeight) ? true : false; } window.onscroll = function(){ if(scrollSlide()){ $.each(arr,function(index,value){ //每次滚动新增arr.length张图片 var box = $("<div></div>").addClass("box").appendTo($("#container")); var content = $("<div></div>").addClass("content").appendTo(box); var random = Math.ceil(Math.random()*10); //产生1-10间的随机数 $("<img></img>").attr("src","images/"+random+".jpg").appendTo(content); }) imgLocation(); } } </script> </body> </html>图片素材: 点击打开百度云盘 密码:kilt