用JavaScript和jQuery实现瀑布流
大致介绍
在慕课网上学习了用原生js和jQuery实现瀑布流,在这里做个笔记
用JavaScript实现
基本结构:
大致介绍
在慕课网上学习了用原生js和jQuery实现瀑布流,在这里做个笔记
用JavaScript实现
基本结构:
基本样式:
*{
margin:0px;
padding:0px;
}
#main{
position:relative;
}
.box{
padding:15px0015px;
float:left;
}
.pic{
padding:10px;
border:1pxsolid#ccc;
border-radius:5px;
box-shadow:005px#ccc;
}
思路:
1、获取#main下的所有.box
2、计算页面中图片有几列,并设置页面的宽度
3、找出这几列中高度最小的列
4、从第二行开始,设置图片为相对定位,把一张图片放到高度最小列的下面
5、更新列的高度,重复3、4、5步骤,直至图片加载完
6、根据最后一张图片的位置确定是否继续加载图片(懒加载)
实现:
1、获取#main下的所有.box
//将main下的所有class为box的元素取出来 varoParent=document.getElementById(parent); varoBox=getByClass(oParent,box);
//根据class获取元素
functiongetByClass(parent,clsname){
vararr=[];//用来存储获取到的所有class为box的元素
varoElement=parent.getElementsByTagName('*');
for(vari=0;i
2、计算页面中图片有几列,并设置页面的宽度
//计算整个页面显示的列数(页面宽/box的宽)
varoBoxW=oBox[0].offsetWidth;
varcols=Math.floor(document.documentElement.clientWidth/oBoxW);
//设置main的宽
oParent.style.cssText='width:'+oBoxW*cols+'px;margin:0auto;';
3、找出这几列中高度最小的列
4、从第二行开始,设置图片为相对定位,把一张图片放到高度最小列的下面
5、更新列的高度,重复3、4、5步骤,直至图片加载完
//存储每列的高度
varhArr=[];
for(vari=0;i
//获取每列高度最小的索引值
functiongetMinIndex(arr,value){
for(variinarr){
if(arr[i]==value){
returni;
}
}
}
6、根据最后一张图片的位置确定是否继续加载图片(懒加载)
假设是后台给的数据
//数据
vardataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};
当滚动条滚动时执行
//滚动条滚动时
window.onscroll=function(){
scrollSlide(dataInt);
}
根据最后一张图片的位置,来判断是否进行加载
//判断是否具有了滚条加载数据块的条件
functioncheckScrollSlide(parent,clsname){
varoParent=document.getElementById(parent);
varoBox=getByClass(oParent,clsname);
varlastBoxH=oBox[oBox.length-1].offsetTop+Math.floor(oBox[oBox.length-1].offsetHeight/2);
varscrollTop=document.documentElement.scrollTop||document.body.scrollTop;
varheight=document.documentElement.clientHeight||document.body.clientHeight;
return(lastBoxH
加载图片
//滚动条滚动时执行
functionscrollSlide(dataInt){
////判断是否具有了滚条加载数据块的条件
if(checkScrollSlide('main','box')){
varoParent=document.getElementById('main');
//将数据块渲染到当前页面的尾部
for(vari=0;i
用jQurey实现
用jQuery实现的思路都是一样的,就直接放代码
$(window).on('load',function(){
waterfall();
vardataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};
$(window).on('scroll',function(){
scrollSlide(dataInt);
})
});
functionwaterfall(){
var$oBox=$('#main>div');
varoBoxW=$oBox.eq(0).outerWidth();
varcols=Math.floor($(window).width()/oBoxW);
$('#main').css({
'width':cols*oBoxW,
'margin':'0auto'
});
varhArr=[];
$oBox.each(function(index,value){
varoBoxH=$oBox.eq(index).height();
if(indexdiv').last();
varlastBoxH=$lastBox.offset().top+Math.floor($lastBox.height()/2);
varscrollTop=$(window).scrollTop();
varclientH=$(window).height();
return(lastBoxH').addClass('box').appendTo('#main');
var$Pic=$('').addClass('pic').appendTo($Box);
$('
').attr('src','images/'+$(value).attr('src')).appendTo($Pic);
})
waterfall();
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!
热门推荐
-
返回顶部
-
3162201930
-
czq8825@qq.com