zoukankan      html  css  js  c++  java
  • 瀑布流的实现

    window.onload=function(){
    
    	getE('main','box');
    
    	var dataint={'data':[{'src':'0.png'},{'src':'1.png'},{'src':'2.png'},{'src':'3.png'},{'src':'4.png'},{'src':'5.png'}]}
    
    	window.onscroll=function(){
    		if(sfons){
    			var oparent=document.getElementById('main');
    			for(var i=0;i<dataint.data.length;i++){
    				var cb=document.createElement('div');//创建一个div
    				cb.className='box';//加一个box class属性
    				oparent.appendChild(cb);//添加到oparent的尾部
    				var cp=document.createElement('div');
    				cp.className='pic';
    				cb.appendChild(cp);
    				var ci=document.createElement('img');
    				ci.src='./img/'+dataint.data[i].src;
    				cp.appendChild(ci);
    			}
    			getE('main','box');
    		}
    	}
    }
    function getE(parent,box){
    	//将mian下的box取出来
    	var oparent=document.getElementById(parent);
    	var boxl=getbcls(oparent,'box');
    	//获取一个盒子的宽度,看可以分成几列
    	var boxw=boxl[0].offsetWidth;
    	var clus=Math.floor(document.documentElement.clientWidth/boxw);
    	//设置main的宽
    	oparent.style.cssText=''+clus*boxw+'px;margin:0 auto';
    	//取高度最小的盒子,在其后面加下一张呢图片
    	var arrh=new Array();//存放几列的高度
    	for(var i=0;i<boxl.length;i++){
    		if(i<clus){
    			arrh.push(boxl[i].offsetHeight);
    		}
    		else{
    			var minh=Math.min.apply(null,arrh);      //获取最小高度
    			var index=getw(arrh,minh);               //得到最小高度位于的那列
    			boxl[i].style.position='absolute';       //绝度定位,把对象卡在那里
    			boxl[i].style.top=minh+'px';
    			boxl[i].style.left=index*boxw+'px';
    			arrh[index]+=boxl[i].offsetHeight;       //把新的高度传给arrh
    		}
    	}
    }
    //获取class
    function getbcls(parent,clsnm){
    	var boxarr=new Array();         //用来存放class数组
    	var oele=parent.getElementsByTagName('*');
    	 	for(var i=0;i<oele.length;i++){
    	 		if(oele[i].className==clsnm){
    	 			boxarr.push(oele[i]);
    	 		}
    	 	}
    	 	return boxarr;
    }
    //找到高度最小的那列
    function getw(arr,val){
    	for(var i in arr){
    		if(arr[i]==val){
               return i;
    		}
    	}
    }
    //是否具备加载数据块的条件
    function sfons(){
    	var oparent=document.getElementById('main');
    	var boxa=getbcls(oparent,'box');
    	var lasth=boxa[boxa.length-1].offsetTop+Math.floor(boxa[boxa.length-1].offsetHeight/2);//图片高度
    	var scrl=document.body.scrollTop||document.documentElement.scrollTop;//滚动条滚动的距离
    	var wh=document.body.clientHeight||document.documentElement.clientHeight;//屏幕的高度
    	return (lasth<srcl+wh)?true:false;//判断是否具备加载的距离
    
    }
    

      

  • 相关阅读:
    部署K2 Blackpearl流程时出错(与基础事务管理器的通信失败或Communication with the underlying transaction manager has failed.)
    用SQL命令将查询结果集导出为文本文件
    SQL函数计算两个日期间的工作日天数
    CommonJS模块加载方法
    async 属性
    如何用VS.NET2005调式.asp和.aspx混合的web系统
    对web.config文件的节点进行加解密
    [转]看似简单的问题 静态方法和实例化方法的区别
    单引号(')和双引号(")
    从一个时间段中查找出星期为“Sunday”的日期
  • 原文地址:https://www.cnblogs.com/mk2016/p/5408045.html
Copyright © 2011-2022 走看看