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中把数字转换为字符串的程序代码
Jun 19 Javascript
js实现checkbox全选、不选与反选的方法
Feb 09 Javascript
JQuery radio(单选按钮)操作方法汇总
Apr 15 Javascript
javascript实现随机读取数组的方法
Aug 03 Javascript
js实现拉幕效果的广告代码
Sep 02 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
vue ssr 实现方式(学习笔记)
Jan 18 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
JS绘图Flot如何实现动态可刷新曲线图
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读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python装饰器知识点补充
2018/05/28 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
加工操作管理制度
2014/01/19 职场文书
教师学习培训邀请函
2014/02/04 职场文书
交通事故和解协议书
2015/01/27 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
小学生暑假安全公约
2015/07/14 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang