本文实例为大家分享了js实现瀑布流布局的具体代码,供大家参考,具体内容如下
原理:
1、瀑布流布局,要求进行布局的元素等宽,然后计算元素的宽与浏览器的宽度之比,得到需要布置的列数。
2、创建一个数组,长度为列数,数组元素为每一列已布置元素的总高度。(一开始为0)。
3、将未布置的元素,依次布置到高度最小的那一列,然后更新这一列的高度,就得到了瀑布流布局

实现
布局
<body> <div id="content"> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <div id="box"> <img src="" > </div> <!-- 很多很多图片 --> </div> </body>
js:
$(function(){
waterFall();
})
function waterFall(){
//计算出每个图片盒子的宽度
var box = $('#box');
var boxWidth = box.outerWidth();
//计算出屏幕的宽度
var screenWidth = $(window).width();
//计算出有多少列
var cols = parseInt(screenWidth / boxWidth);
//定义一行图片盒子的高度数组,找出数组中最少的值
var heigthArr =[];
//所有图片循环
$.each(box,function(item,index){
var boxHeigth = box.outerHeigth();
//判断是否第一排
if(index < cols){
//如果是第一排,取高度,追加到数组中
heigthArr[index] = boxHeigth;
}else{
//最小图片高度
var minBoxHeigth = Math.min.apply(null,heigthArr);
//最小图片的索引
var minBoxIndex = $.inArray(minBoxHeigth,heigthArr);
$(item).css({
position:'absolute',
left:minBoxIndex * boxWidth + 'px',
top:minBoxHeigth + 'px'
});
heigthArr[minBoxIndex]+=boxHeigth;//更新高度
}
})
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持菜鸟教程(cainiaojc.com)。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#cainiaojc.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。