var $ = function() {
return document.querySelectorAll.apply(document, arguments);
}
var arrHeight = []; //得到分列的高度
var columns = function() { //计算页面最多可以放多少列
var containerW = $("#main")[0].clientWidth,
pinW = $(".pin")[0].offsetWidth;
return Math.floor(containerW / pinW);
}
var getIndex = function(arr) { //获得最小高度的index
var minHeight = Math.min.apply(null, arr); //获得最小高度
for (var i in arr) {
if (arr[i] === minHeight) {
return i;
}
}
}
//根据列数确定第一排img的高度并放入数组当中。
var setCenter = (function() { //通过列数设置宽度
var main = $('#main')[0]; //获得罩层
var getPadding = function() { //设置padding
var col = columns(); //获得最后一列
var padding = main.clientWidth - col * $('.pin')[0].offsetWidth;
return padding / 2;
}
var getComputedStyle = function(ele) { //兼容IE的支持情况
if (window.getComputedStyle) {
return window.getComputedStyle(ele);
} else {
return ele.currentStyle;
}
}
var getPinPad = function() { //获得pin的padding值
var pin = $(".pin")[0];
return parseInt(getComputedStyle(pin).paddingLeft);
}
return function() { //设置宽度
main.style.padding = `0 ${getPadding()}px 0 ${getPadding()-getPinPad()}px`;
}
})();
var overLoad = function(ele) {
var index = getIndex(arrHeight),
minHeight = Math.min.apply(null, arrHeight), //获取最小高度
pins = $('.pin'),
style = ele.style;
style.position = "absolute";
style.top = minHeight + "px"; //设置当前元素的高度
style.left = pins[index].offsetLeft + "px";
arrHeight[index] += ele.offsetHeight;
}
//初始化时执行函数
var init = function() {
var pins = $(".pin"),
col = columns();
setCenter(); //设置包裹容器的宽度
for (var i = 0, pin; pin = pins[i]; i++) {
if (i < col) { //存储第一排的高度
arrHeight.push(pin.offsetHeight);
} else {
overLoad(pin); //将元素的位置重排
}
}
}
var overLoad = function(ele) {
var index = getIndex(arrHeight),
minHeight = Math.min.apply(null, arrHeight), //获取最小高度
pins = $('.pin'),
style = ele.style;
style.position = "absolute";
style.top = minHeight + "px"; //设置当前元素的高度
style.left = pins[index].offsetLeft + "px";
arrHeight[index] += ele.offsetHeight;
}
var dataInt = [{
'src': '1.jpg'
}, {
'src': '2.jpg'
}, {
'src': '3.jpg'
}, {
'src': '4.jpg'
}, {
'src': '1.jpg'
}, {
'src': '2.jpg'
}, {
'src': '3.jpg'
}, {
'src': '4.jpg'
}];
function isLoad() { //是否可以进行加载
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop,
wholeHeight = document.documentElement.clientHeight || document.body.clientHeight,
point = scrollTop + wholeHeight; //页面底部距离header的距离
var arr = $('.pin');
var lastHei = arr[arr.length - 1].getBoundingClientRect().top;
return (lastHei < point) ? true : false;
}
//处理滑动
var dealScroll = (function() {
var main = $('#main')[0],
flag = true;
return function() {
if (isLoad() && flag) {
for (var i = 0, data; data = dataInt[i++];) {
var div = document.createElement('div');
div.innerHTML = temp(data.src);
div.className = "pin";
main.appendChild(div);
overLoad(div); //和上面的overload有耦合性质
}
flag = false;
setTimeout(function() { //控制滑行手速,时间越长对速度的滑动时间影响越大。
flag = true;
}, 200);
}
}
})();
function temp(src) {
return `
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_00${src}"/>
</div>
`;
}
function isLoad() { //是否可以进行加载
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop,
wholeHeight = document.documentElement.clientHeight || document.body.clientHeight,
point = scrollTop + wholeHeight; //页面底部距离header的距离
var arr = $('.pin');
var lastHei = arr[arr.length - 1].getBoundingClientRect().top;
return (lastHei < point) ? true : false;
}
var resize = (function() {
var flag;
return function(fn) {
clearTimeout(flag);
flag = setTimeout(function() { //函数的节流,防止用户过度移动
fn();
console.log("ok")
}, 500);
}
})();
var update = function(ele) { //当resize的时候,重新设置
ele.style.position = "initial";
}
//初始化时执行函数
var init = function() {
var pins = $(".pin"),
col = columns();
arrHeight = []; //清空高度
setCenter(); //设置包裹容器的宽度
for (var i = 0, pin; pin = pins[i]; i++) {
if (i < col) { //存储第一排的高度
arrHeight.push(pin.offsetHeight);
update(pin);
} else {
overLoad(pin); //将元素的位置重排
}
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有