基于jquery实现瀑布流布局


Posted in Javascript onJune 28, 2020

本文实例为大家介绍了基于jquery实现瀑布流布局的关键代码,分享给大家供大家参考,具体内容如下

效果图:

基于jquery实现瀑布流布局

具体代码:

使用jquery-1.8.3.min.js,waterfall.js代码如下:

$( window ).load( function(e){
 waterfall();
 var dataInt = { 'data': [{ 'src': '1.jpg' },{ 'src': '2.jpg' },{ 'src': '3.jpg' },{ 'src': '4.jpg' }]};
 $(window).scroll(function(){
  if( checkscrollside() ){
   $.each( dataInt.data, function(index,value){
    var $oPin = $('<div>').addClass('pin').appendTo( $("#main") );
    var $oBox = $('<div>').addClass('box').appendTo( $oPin );
    $('<img>').attr('src','./images/' + $(value).attr('src')).appendTo( $oBox );
   });
   waterfall();
  }
 });
 function waterfall(){
  var $aPin = $( "#main>div" );
  var iPinW = $aPin.eq(0).outerWidth();
  var num = Math.floor( $(window).width() / iPinW );
  $( "#main" ).css({
   'width' : iPinW * num,
   'margin' : '0 auto'
  });

  var pinHArr = [];
  $aPin.each(function( index, value ){
   var pinH = $aPin.eq( index ).height();
   if( index < num ){
    pinHArr[ index ] = pinH;
   }else{
    var minH = Math.min.apply( null, pinHArr );
    var minHIndex = $.inArray( minH, pinHArr );
    $( value ).css({
     'position': 'absolute',
     'top': minH + 15,
     'left': $aPin.eq( minHIndex ).position().left
    });
    pinHArr[ minHIndex ] += $aPin.eq( index ).height() + 15;
   }
  });
 }
 function checkscrollside(){
  var $aPin = $("#main>div");
  var lastPinH = $aPin.last().get(0).offsetTop + Math.floor( $aPin.last().height()/2);
  var scrollTop = $( window ).scrollTop();
  var documentH = $( document ).height();
  return (lastPinH < scrollTop + documentH ) ? true : false;
 }
});

希望本文所述对大家学习有所帮助,谢谢大家的阅读。

Javascript 相关文章推荐
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
DOM 基本方法
Jul 18 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
Angular.js中处理页面闪烁的方法详解
Mar 09 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
ES6中new Function()语法及应用实例分析
Feb 19 Javascript
sharp.js安装过程中遇到的问题总结
Apr 02 Javascript
详解AngularJS Filter(过滤器)用法
Dec 28 #Javascript
原生JavaScript实现瀑布流布局
Jun 28 #Javascript
js实现瀑布流的三种方式比较
Jun 28 #Javascript
详解AngularJS中自定义过滤器
Dec 28 #Javascript
js运动应用实例解析
Dec 28 #Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
Dec 28 #Javascript
浅析JS运动
Dec 28 #Javascript
You might like
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
MYSQL数据库初学者使用指南
2006/11/16 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
php中使用websocket详解
2016/09/23 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
express启用https使用小记
2019/05/21 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Vue实现省市区三级联动
2020/12/27 Vue.js
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
python的中异常处理机制
2018/08/30 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python requests模块session代码实例
2020/04/14 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
简短的公司员工自我评价分享
2013/11/13 职场文书
幼教个人求职信范文
2013/12/02 职场文书
工程部经理岗位职责
2013/12/08 职场文书
大专生自我评价
2014/01/28 职场文书
一年级小学生评语
2014/04/22 职场文书
公司仓库管理制度
2015/08/04 职场文书
辅导员学期工作总结
2015/08/14 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis
Java设计模式之代理模式
2022/04/22 Java/Android