千家信息网

怎么用JavaScript和jQuery实现瀑布流

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"怎么用JavaScript和jQuery实现瀑布流",在日常操作中,相信很多人在怎么用JavaScript和jQuery实现瀑布流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2026年10月31日怎么用JavaScript和jQuery实现瀑布流

这篇文章主要介绍"怎么用JavaScript和jQuery实现瀑布流",在日常操作中,相信很多人在怎么用JavaScript和jQuery实现瀑布流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用JavaScript和jQuery实现瀑布流"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

用JavaScript实现

基本结构:

... ... ...

基本样式:

*{ margin: 0px; padding: 0px; } #main{ position: relative; } .box{ padding: 15px 0 0 15px; float: left; } .pic{ padding: 10px; border: 1px solid #ccc; border-radius: 5px; box-shadow: 0 0 5px #ccc; }

思路:

1、获取#main下的所有.box

2、计算页面中图片有几列,并设置页面的宽度

3、找出这几列中高度最小的列

4、从第二行开始,设置图片为相对定位,把一张图片放到高度最小列的下面

5、更新列的高度,重复3、4、5步骤,直至图片加载完

6、根据最后一张图片的位置确定是否继续加载图片(懒加载)

实现:

1、获取#main下的所有.box

  //将main下的所有class为box的元素取出来  var oParent = document.getElementById(parent);  var oBox = getByClass(oParent,box);
// 根据class获取元素 function getByClass(parent,clsname){  var arr = [];//用来存储获取到的所有class为box的元素  var oElement = parent.getElementsByTagName('*');  for(var i=0;i

2、计算页面中图片有几列,并设置页面的宽度

  //计算整个页面显示的列数(页面宽/box的宽)  var oBoxW = oBox[0].offsetWidth;  var cols = Math.floor(document.documentElement.clientWidth/oBoxW);  //设置main的宽  oParent.style.cssText = 'width:' + oBoxW*cols + 'px;margin:0 auto;';

3、找出这几列中高度最小的列

4、从第二行开始,设置图片为相对定位,把一张图片放到高度最小列的下面

5、更新列的高度,重复3、4、5步骤,直至图片加载完

//存储每列的高度  var hArr = [];  for(var i=0;i
//获取每列高度最小的索引值 function getMinIndex(arr,value){  for(var i in arr){  if(arr[i] == value){   return i;  }  } }

6、根据最后一张图片的位置确定是否继续加载图片(懒加载)

假设是后台给的数据

  //数据  var dataInt = {'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};  

当滚动条滚动时执行

  //滚动条滚动时  _window.onscroll = function(){  scrollSlide(dataInt);  }  

根据最后一张图片的位置,来判断是否进行加载

//判断是否具有了滚条加载数据块的条件 function checkScrollSlide(parent,clsname){  var oParent = document.getElementById(parent);  var oBox = getByClass(oParent,clsname);  var lastBoxH = oBox[oBox.length-1].offsetTop + Math.floor(oBox[oBox.length-1].offsetHeight/2);  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;  var height = document.documentElement.clientHeight || document.body.clientHeight;  return (lastBoxH < scrollTop + height)? true:false; }

加载图片

//滚动条滚动时执行 function scrollSlide(dataInt){  ////判断是否具有了滚条加载数据块的条件  if(checkScrollSlide('main','box')){  var oParent = document.getElementById('main');  //将数据块渲染到当前页面的尾部  for(var i=0;i

用jQurey实现

用jQuery实现的思路都是一样的,就直接放代码

$_(window).on('load',function(){  waterfall();  var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]};  $_(window).on('scroll',function(){  scrollSlide(dataInt);  }) }); function waterfall(){  var $oBox = $('#main>div');  var oBoxW = $oBox.eq(0).outerWidth();  var cols = Math.floor($(window).width()/oBoxW);  $('#main').css({  'width' : cols * oBoxW,  'margin' : '0 auto'  });  var hArr = [];  $oBox.each(function(index,value){  var oBoxH = $oBox.eq(index).height();  if(indexdiv').last();  var lastBoxH = $lastBox.offset().top + Math.floor($lastBox.height()/2);  var scrollTop = $(window).scrollTop();  var clientH = $(window).height();  return (lastBoxH < scrollTop + clientH) ? true : false; } function scrollSlide(dataInt){  if(checkScrollSlide()){  $.each(dataInt.data,function(index,value){   var $Box = $('
').addClass('box').appendTo('#main'); var $Pic = $('
').addClass('pic').appendTo($Box); $('').attr('src','images/' + $(value).attr('src')).appendTo($Pic); }) waterfall(); } }

到此,关于"怎么用JavaScript和jQuery实现瀑布流"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

图片 高度 页面 最小 数据 瀑布 学习 位置 元素 更新 宽度 思路 更多 条件 步骤 存储 定位 帮助 实用 接下来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 上海喔噻互联网科技有限公司 深圳九邦互联网科技有限公司 国智互联网科技 互联网科技官网 美国互联网保险保险科技 北京互联网科技 互联网科技公司发展 深圳互联网络科技有限公司 奇士达互联网科技 华服互联网科技官网 成都铂石互联网科技做什么的 互联网媒体平台算高科技产业 本届互联网博览会上的黑科技 深圳市罗太互联网科技有限公司 科技赋能视角下互联网保险发展 长沙互联网科技 中科明德北京互联网科技 九思连强互联网电子科技有限公司 互联网科技企业商标注意事项 科技赋能下的互联网金融 喔噻互联网科技 致聘互联网科技 深圳前海聚择互联网科技有限公司 互联网科技有哪些公司 国大互联网教育科技有限公司工作 互联网科技大赛获奖感言 互联网第三次科技革命特征 科技信息时代互联网发展 众联互联网络科技
0