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中字符串拼接的基本方法
Jul 07 Javascript
理解javascript中的严格模式
Feb 01 Javascript
原生js实现轮播图
Feb 27 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
vue中的provide/inject的学习使用
May 09 Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 jQuery
angular2实现统一的http请求头方法
Aug 13 Javascript
4个顶级开源JavaScript图表库
Sep 29 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
vue组件中实现嵌套子组件案例
Aug 31 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实现的获取URL信息的类
2007/01/02 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
Python反射的用法实例分析
2018/02/11 Python
Selenium定位元素操作示例
2018/08/10 Python
python实现flappy bird游戏
2018/12/24 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
python虚拟环境完美部署教程
2019/08/06 Python
python ubplot使用方法解析
2020/01/10 Python
python将音频进行变速的操作方法
2020/04/08 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
成人继续教育实施方案
2014/03/01 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
总结Python常用的魔法方法
2021/05/25 Python
python 爬取华为应用市场评论
2021/05/29 Python