js瀑布流布局的实现

 更新时间:2020年06月28日 09:59:32   作者:Jeslie-He  
这篇文章主要为大家详细介绍了js瀑布流布局的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了js实现瀑布流布局的具体代码,供大家参考,具体内容如下

原理:

1、瀑布流布局,要求进行布局的元素等宽,然后计算元素的宽与浏览器的宽度之比,得到需要布置的列数。
2、创建一个数组,长度为列数,数组元素为每一列已布置元素的总高度。(一开始为0)。
3、将未布置的元素,依次布置到高度最小的那一列,然后更新这一列的高度,就得到了瀑布流布局

实现

布局

<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;//更新高度
 }
 })
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • typescript中正则表达式的常用使用方法

    typescript中正则表达式的常用使用方法

    这篇文章主要给大家介绍了关于typescript中正则表达式的常用使用方法,TypeScript是一种静态类型的JavaScript超集,它提供了对正则表达式的全面支持,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • JavaScript获取浏览器窗口尺寸的几种方法

    JavaScript获取浏览器窗口尺寸的几种方法

    JavaScript是一种广泛使用的脚本语言,用于开发网页和应用程序,在Web开发中,经常需要获取浏览器窗口的尺寸,以便根据窗口大小进行布局或执行其他操作,本文将介绍如何使用JavaScript来获取浏览器窗口尺寸,需要的朋友可以参考下
    2023-11-11
  • 小程序页面动态配置实现方法

    小程序页面动态配置实现方法

    这篇文章主要介绍了小程序页面动态配置实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • javascript伸缩菜单栏实现代码分享

    javascript伸缩菜单栏实现代码分享

    这篇文章主要介绍了javascript伸缩菜单栏实现代码,点击标题显示下级菜单,节约了空间,使页面排版更加紧凑,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • js判断url是否有效的两种方法

    js判断url是否有效的两种方法

    本篇文章主要是对js判断url是否有效的两种方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • 详解webpack require.ensure与require AMD的区别

    详解webpack require.ensure与require AMD的区别

    本篇文章主要介绍了详解webpack require.ensure与require AMD的区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • javascript实现的右下角弹窗实例

    javascript实现的右下角弹窗实例

    这篇文章主要介绍了javascript实现的右下角弹窗,实例分析了javascript实现右下角弹窗的完整实现步骤与技巧,需要的朋友可以参考下
    2015-04-04
  • javascript中substring()、substr()、slice()的区别

    javascript中substring()、substr()、slice()的区别

    在js中字符截取函数有常用的三个slice()、substring()、substr()了,下面我来给大家介绍slice()、substring()、substr()函数在字符截取时的一些用法与区别吧。
    2015-08-08
  • 浅谈Javascript的静态属性和原型属性

    浅谈Javascript的静态属性和原型属性

    本文给大家介绍的是javascript中的静态属性和原型属性,并附上示例分析,十分的实用,有需要的小伙伴可以参考下。
    2015-05-05
  • js监听输入框值的即时变化onpropertychange、oninput

    js监听输入框值的即时变化onpropertychange、oninput

    很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感。
    2011-07-07

最新评论