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变量函数浅析
Sep 02 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
Nov 10 Javascript
javaScript中的this示例学习详解及工作原理
Jan 13 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
Node.js中调用mysql存储过程示例
Dec 20 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 Javascript
使用AngularJS2中的指令实现按钮的切换效果
Mar 27 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
PHP array操作10个小技巧分享
2011/06/23 PHP
PHP实现的购物车类实例
2015/06/17 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
农村婚礼证婚词
2014/01/08 职场文书
教师读书活动总结
2014/05/07 职场文书
文化建设工作方案
2014/05/12 职场文书
购房意向书
2014/08/30 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js