怎么用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;i2、计算页面中图片有几列,并设置页面的宽度
//计算整个页面显示的列数(页面宽/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安全错误
数据库的锁怎样保障安全
伟宏互联网科技
互联网科技公司的优势
礼当家互联网科技
朗涯互联网科技
亿账通互联网科技
互联网科技大会
互联网 科技馆
开启互联网科技时代小说
以后互联网后是啥科技
汽车互联网创新科技园
中化能源互联网科技招聘
恒生互联网科技指数跳水
广州新华互联网科技学校电竞方面
滨湖区互联网智能科技产品有哪些
工业互联网山东科技大学
梅州GM互联网络科技有限公司
广州互联网高科技取餐柜
中国互联网公司的科技投入
悟空问答互联网科技
深圳互联网科技园地址
手磨咖啡
互联网为科技
互联网科技视频
小马过河互联网科技
互联网科技网站
新兴科技互联网创新大赛颁奖典礼
苏州铭阳互联网科技有限公司
中国互联网有什么科技
互联网相关科技技术
神州科技互联网有限公司

