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 相关文章推荐
超棒的javascript页面顶部卷动广告效果
Dec 01 Javascript
番茄的表单验证类代码修改版
Jul 18 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
JQuery实现级联下拉框效果实例讲解
Sep 17 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
vue中v-model动态生成的实例详解
Oct 27 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 07 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类
2006/10/09 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
Python线程下使用锁的技巧分享
2018/09/13 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Python devel安装失败问题解决方案
2020/06/09 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
喷漆工的岗位职责
2014/03/17 职场文书
感恩教育观后感
2015/06/17 职场文书
社会实践心得体会范文
2016/01/14 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
Redis高可用集群redis-cluster详解
2022/03/20 Redis
Python学习之时间包使用教程详解
2022/03/21 Python