实现过程
- 封装获取函数(注意:不要忘记调用)
- 获取容器(浏览器可视页面)宽度-cw(只需获取自身真实宽度即可)
- 获取图片所在小盒子宽度-aw(需获取包含边框+内外边距+自身宽度)
- 获取每行存储图片的个数cw/aw
- 声明一个空数组放置图片位置
- 确定第一行图片所在位置
- 遍历 获取each(function(index,domobj){}) //index代表图片索引,domobj 代表当前选中图片
- 存储图片高度 imgArr.push($(domobj).outerHeight(true))
- 放置其它图片
- 确定第一行放置图片的最小高度minHeight = Math.min.arr(null,imgArr)
- 确定最小高度图片的位置minIndex = imgArr.indexOf(minHeight)
- 更新图片位置 imgArr[minIndex] += $(domobj).outerHeight(true)
注:在设置css样式时要注意给图片所在盒子设置定位,js要引入函数库
手写笔记
js代码
<script>
window.onload = function(){
/**
* 瀑布流函数
*/
function fn(){
// 获取容器宽度
var $cw = $("#container").width()
// 获取图片盒子宽度
var $aw = $(".album").eq(0).outerWidth(true)
// 一行能放置多少张图片
var _col = Math.floor($cw/$aw)
console.log(_col,"一行放置图片数")
// 放置图片
var imgArr = []
// 遍历循环
$(".album").each(function(index,domobj){
// 第一行放置
if(index < _col){
$(domobj).css({
left:index * $aw,
top:0
})
imgArr.push($(domobj).outerHeight(true))
}else{
// 剩下的图片放置
// 获取第一行图片最小高度
var _minHeight = Math.min.apply(null ,imgArr)
// 获取第一行图片最小高度的位置
var _minIndex = imgArr.indexOf(_minHeight)
$(domobj).css({
left : _minIndex * $aw,
top: _minHeight
})
imgArr[_minIndex] += $(domobj).outerHeight(true)
}
})
}
fn()
}
</script>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
#container{
position: relative;
}
.album{
width: 200px;
height: auto;
border: 1px solid;
border-radius: 5px;
padding: 5px;
box-shadow: #888 0 0 3px;
position: absolute;
margin: 5px;
}
img{
width: 200px;
height: auto;
}
</style>
</head>
<body>
<div id="container">
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
<div class="album"><img src="./images/x (17).jpg" alt=""></div>
<div class="album"><img src="./images/x (18).jpg" alt=""></div>
<div class="album"><img src="./images/x (19).jpg" alt=""></div>
<div class="album"><img src="./images/x (20).jpg" alt=""></div>
<div class="album"><img src="./images/x (21).jpg" alt=""></div>
<div class="album"><img src="./images/x (22).jpg" alt=""></div>
<div class="album"><img src="./images/x (23).jpg" alt=""></div>
<div class="album"><img src="./images/x (24).jpg" alt=""></div>
<div class="album"><img src="./images/x (25).jpg" alt=""></div>
</div>
<script src="./js/libs/jQuery/jquery.js"></script>
<script>
window.onload = function(){
function fn(){
// 获取容器宽度 width 自身实际宽度不包含边框和内外边距
var $cw = $("#container").width()
// 获取图片盒子宽度
var $aw = $(".album").eq(0).outerWidth(true)
// 一行放置多少照片
var col = Math.floor($cw/$aw)
console.log(col,"一行放置图片数 ")
// 放置图片
var imgArr = []
// 遍历(循环)确定图片放置位置 里面index代表放置图片的索引 domobj代表当前选中的图片
$(".album").each(function(index,domobj){
//
if(index <col){
// 放置第一行图片
$(domobj).css({
// 当前图片距左边的距离 以便确定图片位置
left:index * $aw,
top:0
})
// 存储图片高度 outerHeight 图片的内外边距+边框+自身高度
imgArr.push($(domobj).outerHeight(true))
}else{
// 放置后续图片
// 获取第一行图片中高度最低的图片高度 ull无关紧要的参数,未使用就写null表示参数传值为空
var _minHeight = Math.min.apply(null,imgArr)
// 获取图片高度最小的那个位置 indexOf 查找
var _minIndex = imgArr.indexOf(_minHeight)
$(domobj).css({
left:_minIndex * $aw,
top : _minHeight
})
// 更新高度
imgArr[_minIndex] += $(domobj).outerHeight(true)
}
})
}
fn()
}
</script>
</body>
</html>