//动态设置页面左右居中
/**
* 瀑布流效果:
* 1.第二行 的图片第一张图片应该放在每列的高度最矮的图片下面
* 2.
*
*/
window.onload = function () {
waterFlow();
// 准备上拉加载数据
var dataImage = {
data: [
{ src: "./imges/9.jpg" },
{ src: "./imges/1.jpg" },
{ src: "./imges/2.jpg" },
{ src: "./imges/3.jpg" },
{ src: "./imges/4.jpg" },
{ src: "./imges/5.jpg" },
{ src: "./imges/6.jpg" },
{ src: "./imges/7.jpg" },
{ src: "./imges/8.jpg" },
{ src: "./imges/10.jpg" },
]
}
window.onscroll = function () {
if (checkReachBottom()) {
console.log("触底了");
}
}
}
function waterFlow() {
///获取父级容器
var parentCotainer = document.getElementById("container");
//获取所有子元素
var allChild = document.getElementsByClassName("box");
//获取屏幕宽度
var screenwidth = document.documentElement.clientWidth;
//获取一个图片容器的宽度
var childWidth = allChild[0].offsetWidth;
//计算屏幕水平方向最多能摆放的个数
var rowsNum = Math.floor(screenwidth / childWidth) - 1;
//居中
parentCotainer.style.cssText = "width:" + rowsNum * childWidth + "px;margin:0 auto;";
getMinHeightOfCols(allChild, rowsNum);
}
waterFlow();
//2 .动态图片位置
function getMinHeightOfCols(allChild, rowsNum) {
//获取 存储 每列的高度
var colsHeightArr = [];
for (var i = 0; i < allChild.length; i++) {
//判断取出第一行图片,并获取高度,放入到数组中
if (i < rowsNum) {//当i大于最多数时 自动跳到下一行
//获取当前图片高度
colsHeightArr[i] = allChild[i].offsetHeight;
} else {
//第二行
//获取本行中高度最小图片的那一列
var MinHeightOfCols = Math.min.apply(null, colsHeightArr);
//获取最小值对应的下标(位置)
var MinHeightOfIndex = colsHeightArr.indexOf(MinHeightOfCols);
//摆放位置
allChild[i].style.position = "absolute";
allChild[i].style.top = MinHeightOfCols + 'px';
allChild[i].style.left = allChild[MinHeightOfIndex].offsetLeft + 'px';
//高度的合并
colsHeightArr[MinHeightOfIndex] = colsHeightArr[MinHeightOfIndex] + allChild[i].offsetHeight;
}
}
}
//3.判断页面触底
/*
1. 逻辑 : 滚动高度 +页面可视窗口高度 ;
2. 业务 :滚动高度 +视口高度 > 文档总高度 - 最后一张图片高度
*/
function checkReachBottom() {
//获取滚动高度
var scorllHeight = document.documentElement.scrollTop;
//获取视口高度
var pageHeight = document.documentElement.clientHeight;
//文档总高度
//获取最后一个元素
var allChild = document.getElementsByClassName("box");
var lastChildBox = allChild[allChild.length - 1];//最后一个元素
var lastChildBoxTop = allChild[allChild.length - 1].offsetHeight;//最后一个元素距离顶部高度
return lastChildBoxTop < pageHeight + scorllHeight ? true : false;
}
老师我这个 设置完后只要滑动就 触发 那个 触底函数了