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 20 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
Jun 03 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
通过vue刷新左侧菜单栏操作
Aug 06 Javascript
vscode中使用npm安装babel的方法
Aug 02 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电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php的dl函数用法实例
2014/11/06 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
机动车登记业务委托书
2014/10/08 职场文书
新闻人物通讯稿
2014/10/09 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
2014年教研组工作总结
2014/11/26 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
安全生产感想
2015/08/07 职场文书