基于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 相关文章推荐
javascript日期计算实例分析
Jun 29 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
Oct 30 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
你应该知道的几类npm依赖包管理详解
Oct 06 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
Vue.js实现可排序的表格组件功能示例
Feb 19 Javascript
JS使用new操作符创建对象的方法分析
May 30 Javascript
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
小程序自定义轮播图圆点组件
Jun 25 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
Javascript中的常见排序算法
2007/03/27 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
python统计日志ip访问数的方法
2015/07/06 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
自荐信的基本格式
2014/02/22 职场文书
学生逃课检讨书
2015/02/17 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js