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 20 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
Web安全测试之XSS实例讲解
Aug 15 Javascript
手机软键盘弹出时影响布局的解决方法
Dec 15 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
微信小程序如何实现全局重新加载
Jun 05 Javascript
如何在postman测试用例中实现断言过程解析
Jul 09 Javascript
Array.filter中如何正确使用Async
Nov 04 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
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中动态HTML的输出技术
2006/10/09 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
使用Apache的rewrite
2021/03/09 Servers
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
python中PIL安装简单教程
2016/04/21 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
python中class的定义及使用教程
2019/09/18 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
求职信的最佳写作思路
2014/02/01 职场文书
高考备战决心书
2014/03/11 职场文书
眼镜促销方案
2014/03/15 职场文书
员工考核评语大全
2014/04/26 职场文书
银行求职信模板
2015/03/20 职场文书
2015年财务部工作总结
2015/04/10 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
城南旧事读书笔记
2015/06/29 职场文书
销售人员管理制度
2015/08/06 职场文书