<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>瀑布流布局demo</title>
</head>
<body>
<div id="app">
<div class="box">
<img src="img/xsz_font.jpg">
<img src="img/1.png">
<img src="img/2.png">
<img src="img/xsz_font.jpg">
<img src="img/4.png">
<img src="img/5.png">
<img src="img/xsz_font.jpg">
</div>
</div>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
$(function () {
waterFall();
});
function waterFall() {
var box = $(".box");
// 求出图片的宽度
var boxWidth = box.outerWidth();
// 屏幕的宽度
var screenWidth = $(window).width();
// 求列数
var cols = parseInt(screenWidth / boxWidth);
// 数组
var heightArr = [];
// 遍历所有的图片
$.each(box, function (index, item) { //index索引,item当前元素
// 判断是否是第一行
var boxHeight = $(item).outerHeight(); //每张图片的高度
if (index < cols) {
heightArr[index] = boxHeight;//把每一张图片的高度存在数组里
} else {
// 最小高度 ...扩展运算符 es6
var minBoxHeight = Math.min(...heightArr);
// 最小高度索引
// $.inArray() 用于数组中查找指定值,返回它的索引
var minBoxIndex = $.inArray(minBoxHeight, heightArr);
$(item).css({
position: 'absolute',
top: minBoxHeight + 'px',
left: minBoxIndex * boxWidth + 'px'
});
// 更新最小高度的值
heightArr[minBoxIndex] += boxHeight;
}
});
}
//拓展
// var arr=[100,50,30,80];
// var a=Math.min(arr);
// console.log(a);
// apply() call()
// Math.min.apply(null,arr) //es5
</script>
</body>
</html>
[JavaScript] js 实现瀑布流布局
最新推荐文章于 2024-09-23 15:34:46 发布