js瀑布流布局的实现


Posted in Javascript onJune 28, 2020

本文实例为大家分享了js实现瀑布流布局的具体代码,供大家参考,具体内容如下

原理:

1、瀑布流布局,要求进行布局的元素等宽,然后计算元素的宽与浏览器的宽度之比,得到需要布置的列数。
2、创建一个数组,长度为列数,数组元素为每一列已布置元素的总高度。(一开始为0)。
3、将未布置的元素,依次布置到高度最小的那一列,然后更新这一列的高度,就得到了瀑布流布局

js瀑布流布局的实现

实现

布局

<body>
 <div id="content">
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <div id="box">
  <img src="" >
  </div>
  <!-- 很多很多图片 -->
 </div>
</body>

js:

$(function(){
 waterFall();
})
function waterFall(){
 //计算出每个图片盒子的宽度
 var box = $('#box');
 var boxWidth = box.outerWidth();
 //计算出屏幕的宽度
 var screenWidth = $(window).width();
 //计算出有多少列
 var cols = parseInt(screenWidth / boxWidth);
 //定义一行图片盒子的高度数组,找出数组中最少的值
 var heigthArr =[];
 //所有图片循环
 $.each(box,function(item,index){
 var boxHeigth = box.outerHeigth();
 //判断是否第一排
 if(index < cols){
  //如果是第一排,取高度,追加到数组中
  heigthArr[index] = boxHeigth;
 }else{
  //最小图片高度
  var minBoxHeigth = Math.min.apply(null,heigthArr);
  //最小图片的索引
  var minBoxIndex = $.inArray(minBoxHeigth,heigthArr);
  $(item).css({
  position:'absolute',
  left:minBoxIndex * boxWidth + 'px',
  top:minBoxHeigth + 'px'
  });
  heigthArr[minBoxIndex]+=boxHeigth;//更新高度
 }
 })
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
基于Jquery的简单图片切换效果
Jan 06 Javascript
javascript 二进制运算技巧解析
Nov 27 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
使用jquery动态加载Js文件和Css文件
Oct 24 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
Vue中的异步组件函数实现代码
Jul 20 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
JS回调函数深入理解
Oct 16 Javascript
JavaScript如何使用插值实现图像渐变
Jun 28 #Javascript
vue实现登录拦截
Jun 29 #Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
Jun 28 #Javascript
JavaScript多种图形实现代码实例
Jun 28 #Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 #Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 #Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 #Javascript
You might like
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
Javascript事件实例详解
2013/11/06 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
Python实现扫码工具的示例代码
2020/10/09 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
出国留学英文自荐信
2015/03/25 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
Feign调用全局异常处理解决方案
2021/06/24 Java/Android