瀑布流封装
来源:互联网 发布:实现即时通讯的php文件 编辑:程序博客网 时间:2024/05/29 04:39
window.onload = function () {
window.onscroll = function () {
if(checkScrollSide()){
for(var i=0;i<dataInt.data.length;i++){
var oParent=document.getElementById("main");
var oBox=document.createElement('div');
oBox.className='box';
oParent.appendChild(oBox);
var oPic=document.createElement('div');
oPic.className='pic';
oBox.appendChild(oPic);
var oImg=document.createElement('img');
oPic.appendChild(oImg);
oImg.src='images/'+ dataInt.data[i].src;
}
waterFull('main','box');
}
}
}
function waterFull (parent, box) {
//把父元素为main的所有子元素取出来
var oParent = document.getElementById(parent);
var oBox = getByClass(oParent,box);
//计算每一列的列数(总宽度 / 图片宽度)
var oBoxW = oBox[0].offsetWidth;//每个盒子的宽度
var cols = Math.floor(document.documentElement.clientWidth / oBoxW);
oParent.style.cssText = 'width:' + oBoxW * cols + 'px; margin: 0 auto';
//存储所有盒子的高度
var hArr=[];
for(var i=0;i<oBox.length;i++){
if(i<cols){
hArr.push(oBox[i].offsetHeight);
}else{
minH=Math.min.apply(null,hArr);
// console.log(minH);
var index=getMinhIndex(hArr,minH);
oBox[i].style.position='absolute';
oBox[i].style.top=minH+'px';
oBox[i].style.left=oBox[index].offsetLeft+'px';
hArr[index]+=oBox[i].offsetHeight;
}
}
}
function getByClass (parent,clsname) {
var boxArr = [];//用来存储获取到的所有子元素
var oElements = parent.getElementsByTagName('*');//*代表所有子元素
for (var i=0;i<oElements.length;i++) {
if(oElements[i].className == clsname){
boxArr.push(oElements[i]);
}
}
return boxArr;
}
function getMinhIndex (arr,val) {
for(var i in arr){
if(arr[i] == val){
return i;
}
}
}
function checkScrollSide () {
var oParent=document.getElementById("main")
var oBox=getByClass(oParent,'box');
var lastBoxH=oBox[oBox.length-1].offsetTop+Math.floor(oBox[oBox.length-1].offsetHeight/2);
var oscrollTop=document.body.scrollTop || document.documentElement.scrollTop;
var oclientHeight=document.body.clientHeight || document.documentElement.clientHeight;
return (lastBoxH<oscrollTop+oclientHeight)? true : false;
}
waterFull('main','box');
// 模拟json数据
var dataInt={"data":[{"src":'0.jpg'},{"src":'1.jpg'},{"src":'2.jpg'},{"src":'3.jpg'},{"src":'4.jpg'}]}window.onscroll = function () {
if(checkScrollSide()){
for(var i=0;i<dataInt.data.length;i++){
var oParent=document.getElementById("main");
var oBox=document.createElement('div');
oBox.className='box';
oParent.appendChild(oBox);
var oPic=document.createElement('div');
oPic.className='pic';
oBox.appendChild(oPic);
var oImg=document.createElement('img');
oPic.appendChild(oImg);
oImg.src='images/'+ dataInt.data[i].src;
}
waterFull('main','box');
}
}
}
function waterFull (parent, box) {
//把父元素为main的所有子元素取出来
var oParent = document.getElementById(parent);
var oBox = getByClass(oParent,box);
//计算每一列的列数(总宽度 / 图片宽度)
var oBoxW = oBox[0].offsetWidth;//每个盒子的宽度
var cols = Math.floor(document.documentElement.clientWidth / oBoxW);
oParent.style.cssText = 'width:' + oBoxW * cols + 'px; margin: 0 auto';
//存储所有盒子的高度
var hArr=[];
for(var i=0;i<oBox.length;i++){
if(i<cols){
hArr.push(oBox[i].offsetHeight);
}else{
minH=Math.min.apply(null,hArr);
// console.log(minH);
var index=getMinhIndex(hArr,minH);
oBox[i].style.position='absolute';
oBox[i].style.top=minH+'px';
oBox[i].style.left=oBox[index].offsetLeft+'px';
hArr[index]+=oBox[i].offsetHeight;
}
}
}
function getByClass (parent,clsname) {
var boxArr = [];//用来存储获取到的所有子元素
var oElements = parent.getElementsByTagName('*');//*代表所有子元素
for (var i=0;i<oElements.length;i++) {
if(oElements[i].className == clsname){
boxArr.push(oElements[i]);
}
}
return boxArr;
}
function getMinhIndex (arr,val) {
for(var i in arr){
if(arr[i] == val){
return i;
}
}
}
function checkScrollSide () {
var oParent=document.getElementById("main")
var oBox=getByClass(oParent,'box');
var lastBoxH=oBox[oBox.length-1].offsetTop+Math.floor(oBox[oBox.length-1].offsetHeight/2);
var oscrollTop=document.body.scrollTop || document.documentElement.scrollTop;
var oclientHeight=document.body.clientHeight || document.documentElement.clientHeight;
return (lastBoxH<oscrollTop+oclientHeight)? true : false;
}
0 0
- 瀑布流封装
- js瀑布流,简单封装
- 封装自定义瀑布流,实现原理
- iOS学习笔记--瀑布流封装
- iOS 瀑布流的理解和封装
- 源码推荐(11.05):AFNetworking简单封装,瀑布流
- jQuery瀑布流技术封装并制作插件
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- 瀑布流
- Apache Kylin的快速数据立方体算法——概述
- Integer 的小知识
- Spring beans架构--set注入
- Angular2学习之懒加载(Lazy)路由(router)问题
- Gradle学习笔记(三)java项目编译
- 瀑布流封装
- 安卓学习笔记-3
- 读《聪明人用方格笔记本》有图了有内容了
- mysql-5.5.33编译安装
- 学习python的第二十四天-Web
- POJ 1477 Box of Bricks G++
- 一些题目
- Native.js学习(二):利用Native.js实现Android与HTML数据的交互
- Android之drawable state各个属性详解