var cal = (function() {
"use strict";
var $ = function() {
return document.querySelectorAll.apply(document, arguments);
}
var arrHeight = []; //得到分列的高度
var columns = function() { //计算页面最多可以放多少列
var bodyW = document.body.clientWidth,
pinW = $(".pin")[0].offsetWidth;
return Math.floor(bodyW / 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 setWidth = function() { //通过列数设置宽度
var col = columns(), //获得最后一列
main = $('#main')[0]; //获得罩层
main.style.width = col * $('.pin')[0].offsetWidth + "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();
setWidth(); //设置包裹容器的宽度
for (var i = 0, pin; pin = pins[i]; i++) {
if (i < col) { //存储第一排的高度
arrHeight.push(pin.offsetHeight);
} else {
overLoad(pin); //将元素的位置重排
}
}
}
window.onload = init;
//...执行自动更新操作。
//添加当,滚动到一定位置的时候,添加html节点.
//得到最低高度和序号,获得临界位置
//模仿加载数据
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() {
console.log("trigger");
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;
}, 1000);
}
}
})();
window.addEventListener('scroll', function() {
dealScroll();
}, false);
function temp(src) {
return `
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_00${src}"/>
</div>
`;
}
})();
$font:10px/1.5 sans-serif,"Microsoft YaHei","Arial";
html{
height: 100%;
width: 100%;
font:$font;
}
#main{
position: relative;
&::after{
display:block;
content:'';
clear:both;
}
}
.pin{
padding: 15px 0 0 15px;
float:left;
}
.box{
padding: 10px;
border:1px solid #ccc;
box-shadow: 0 0 6px #ccc;
border-radius: 5px;
}
.box img{
width:162px;
height:auto;
}
<div id="main">
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_001.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_002.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_003.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_004.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_005.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_006.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_007.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_008.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_009.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_010.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_011.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_012.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_013.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_014.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_015.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_016.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_017.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_018.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_019.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_020.jpg" />
</div>
</div>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_021.jpg" />
</div>
</div>
</div>
<script type="text/javascript" src="./dist/index.entry.js"></script>
<div class="pin">
<div class="box">
<img src="http://cued.xunlei.com/demos/publ/img/P_001.jpg" />
</div>
</div>
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); //将元素的位置重排
}
}
}
<div id="container">
<span class="column">
<span class="panel">
<img src="http://cued.xunlei.com/demos/publ/img/P_009.jpg" alt="">
<p></p>
</span>
</span>
</div>
$font:10px/1.5 sans-serif,"Microsoft YaHei","Arial";
html,body{
height: 100%;
width: 100%;
font:$font;
background-color: #eee;
}
#container{
width:100%;
height: 100%;
position: relative;
text-align: center;
}
.column{
display: inline-block;
width:210px;
vertical-align: top;
padding:0 10px;
.panel{
padding: 10px 0 10px 0;
display: block;
text-align: center;
margin-bottom: 10px;
border: 1px solid #ccc;
background-color: #fff;
text-decoration: none;
}
}
var $ = function() { //一个hacks
return document.querySelectorAll.apply(document, arguments);
}
var waterFall = (function(){
//初始化布局
var arrHeight = []; //列的高度
var columns = function() { //计算页面最多可以放多少列
var bodyW = $('#container')[0].clientWidth,
pinW = $(".column")[0].offsetWidth;
return Math.floor(bodyW / pinW);
}
//设置瀑布流居中
var getHtml = function() {
var cols = $('.column'), //获得已有的列数
arrHtml = [];
for (var i = 0, col; col = cols[i++];) {
var htmls = col.innerHTML.match(/<img(?:.|\n|\r|\s)*?p>/gi); //获取一个columns的
arrHtml = arrHtml.concat(htmls);
}
return arrHtml;
}
//获得数组中最低的高度
var getMinIndex = function() { //获得最小高度的index
var minHeight = Math.min.apply(null, arrHeight); //获得最小高度
for (var i in arrHeight) {
if (arrHeight[i] === minHeight) {
return i;
}
}
}
var createCol = function() {
var cols = columns(), //获得列数
contain = $("#container")[0];
contain.innerHTML = ''; //清空数据
for (var i = 0; i < cols; i++) {
var span = document.createElement("span");
span.className = "column";
contain.appendChild(span);
}
}
//初始化列的高度
var initHeight = function() {
var cols = columns(),
arr = [];
for (var i = 0; i < cols; i++) {
arr.push(0);
}
arrHeight = arr;
}
//创建一个ele并且添加到最小位置
var createArticle = function(html){
var cols = $('.column'),
index = getMinIndex(),
ele = document.createElement('article');
ele.className = "panel";;
ele.innerHTML = html;
cols[index].appendChild(ele);
arrHeight[index] += ele.clientHeight;
}
//遍历获得的html然后添加到页面中
var reloadImg = function(htmls) {
for (var i = 0, html, index; html = htmls[i++];) {
createArticle(html);
}
}
var onload = function() {
var contain = $("#container")[0], //获得容器
arrHtml = getHtml(); //获得现有的所有瀑布流块
//创建列,然后进行加载
createCol();
//初始化arrHeight
initHeight();
//进行页面的重绘
reloadImg(arrHtml);
return this;
}
})();
show u code
var isLoad=function() { //是否可以进行加载
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop,
wholeHeight = document.documentElement.clientHeight || document.body.clientHeight,
point = scrollTop + wholeHeight; //页面底部距离header的距离
var lastHei = Math.min.apply(null,arrHeight);
return (lastHei < point) ? true : false;
}
var dealScroll = (function(){
window.onscroll = ()=>{dealScroll();}
var container = $('#container')[0];
return function(){
if(isLoad()){
for(var i = 0,html,data;data = dataInt[i++]; ){
html = tpl.temp(data.src); //获得数据然后添加模板
createArticle(html);
}
}
return this;
}
})();
var resize = (function(){
window.onresize = ()=>{resize();};
var flag;
return function(){
clearTimeout(flag);
flag = setTimeout(()=>{onload();},500);
return this;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有