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 常用功能总结
Mar 18 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 Javascript
浅谈js和css内联外联注意事项
Jun 30 Javascript
轻松搞定js表单验证
Oct 13 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 Javascript
JS实现判断有效的数独算法示例
Feb 25 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
Nov 14 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 socket 模拟POST 请求实例代码
2016/07/18 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
php之可变函数的实例详解
2017/09/13 PHP
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
20个常用Python运维库和模块
2018/02/12 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
对python中字典keys,values,items的使用详解
2019/02/03 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
python创建文本文件的简单方法
2020/08/30 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
写给老婆的检讨书
2014/02/21 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
golang 实现两个结构体复制字段
2021/04/28 Golang
如何用Python搭建gRPC服务
2021/06/30 Python
Python实现照片卡通化
2021/12/06 Python