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之对系统的toFixed()方法的修正
May 08 Javascript
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
做web开发 先学JavaScript
Dec 12 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
javascript实现uploadify上传格式以及个数限制
Nov 23 Javascript
xtemplate node.js 的使用方法实例解析
Aug 22 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
Jun 24 Javascript
layui table 表格模板按钮的实例代码
Sep 21 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连接MySQL代码的参数说明
2008/06/07 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
计划生育宣传标语
2014/06/21 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
党性教育心得体会
2014/09/03 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
任长霞观后感
2015/06/16 职场文书
高三数学教学反思
2016/02/18 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
详解Redis主从复制实践
2021/05/19 Redis
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android