用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;i2、计算页面中图片有几列,并设置页面的宽度
//计算整个页面显示的列数(页面宽/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