<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图墙</title>
<style>
*{//消除内外边距
padding: 0;
margin: 0;
}
#itemBox{
//给大div 指定宽高 相对定位 剧中
width: 1050px;
height: 100px;
margin: 0px auto;
position: relative;
}
.item{
//给照片设置边框 内边距 绝对定位
border: 1px solid #ccc;
padding: 4px;
position: absolute;
}
</style>
</head>
<body>
<div id="itemBox">
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_000.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_001.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_002.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_003.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_004.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_005.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_000.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_001.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_002.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_003.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_004.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_005.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_000.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_001.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_002.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_003.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_004.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_005.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_000.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_001.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_002.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_003.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_004.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_005.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_000.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_001.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_002.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_003.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_004.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_005.jpg" alt="#">
</div>
<div class="item">
<img src="images/P_006.jpg" alt="#">
</div>
</div>
<script type="text/javascript">
//页面加载完成时执行代码
window.onload=function(){
//获取元素
var itemBox=document.getElementById('itemBox');
var items=document.getElementsByClassName('item');
//获取元素的宽度
var itemBoxW=itemBox.offsetWidth;
//获取大div的宽度
var itemW=items[0].offsetWidth;
//获取照片的宽度
var c=parseInt(itemBoxW / itemW);
//计算要排多少列
var d=(itemBoxW - c*itemW)/c;
//计算每张照片之间的空袭
var arr=[]; //定义一个空数组
waterFull();//瀑布效果
function waterFull(){
for (var i = 0; i < items.length; i++) {
if (i<c) //第一排的照片 排放位置
{
items[i].style.left=(itemW + d) * i + "px";
items[i].style.top=d + "px";
arr[i]=items[i].offsetHeight + d;
}else//第二排及以后添加照片的位置
{ //定义一个变量 获取数组中照片高度最低的那一个
var minH=getMin(arr).minH;
//获取第一排照片的最低高度(height)的照片
var minI=getMin(arr).minI;
//获取最低(height)照片所在的列
items[i].style.left=(itemW + d) * minI + "px";
//把新照片添加所在的列
items[i].style.top=minH + d + "px";
//把照片放在在高度最低的照片下面
arr[minI]=arr[minI]+items[i].offsetHeight+d;
//刷新照片最低的高度 重新找其他列剩余的最低高度 添加照片
}
}
}
function getMin(arr){
//获取数组的最小值以及索引 返回多个值 封装对象
var obj={};
//对象名.属性名 = 属性值
obj.minH=arr[0];
obj.minI=0;
for (var i = 1; i < arr.length; i++) {
if (arr[i] < obj.minH)
//如果有元素比该元素小 就把更小的值赋值给他 并获取索引
{
obj.minH=arr[i];
obj.minI=i;
}
}
return obj;
返回数组
}
// 6.滚动页面时,加载数据
window.onscroll = function() {
if (window.pageYOffset + window.innerHeight > getMin(arr).minH)
// 当文档左上角滚动的距离 加上 当前窗口高度 > 高度
{
var json = [
{ "src": "images/P_000.jpg" },
{ "src": "images/P_001.jpg" },
{ "src": "images/P_002.jpg" },
{ "src": "images/P_003.jpg" },
{ "src": "images/P_004.jpg" },
{ "src": "images/P_005.jpg" },
{ "src": "images/P_006.jpg" },
{ "src": "images/P_007.jpg" },
{ "src": "images/P_008.jpg" },
{ "src": "images/P_009.jpg" },
{ "src": "images/P_010.jpg" }
];
for (var i = 0; i < json.length; i++)
//遍历新的图片数组
{
var div =document.createElement('div');
div.className = 'item';
//创建div
var img =document.createElement('img');
//添加图片
img.src = json[i].src;
//获取图片地址
div.appendChild(img);
//往新的div中添加图片
itemBox.appendChild(div);
//加ru到页面父元素布局
}
waterFull();
//执行瀑布流
}
}
}
</script>
</body>
</html>
07-16
07-16
07-16
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交