基于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 相关文章推荐
ie focus bug 解决方法
Sep 03 Javascript
理解Javascript_11_constructor实现原理
Oct 18 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
Bootstrap CSS组件之大屏幕展播
Dec 17 Javascript
微信小程序实现上传图片功能
May 28 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
JavaScript WeakMap使用详解
Feb 05 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
php多文件上传下载示例分享
2014/02/20 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
Python验证码识别处理实例
2015/12/28 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
python中的计时器timeit的使用方法
2017/10/20 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
python3实现字符串操作的实例代码
2019/04/16 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
上班打牌检讨书
2014/02/07 职场文书
触电现场处置方案
2014/05/14 职场文书
踏青活动策划方案
2014/08/19 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
关于环保的广播稿
2015/12/17 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
MySQL的存储过程和相关函数
2022/04/26 MySQL