基于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 相关文章推荐
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
May 30 Javascript
vue - vue.config.js中devServer配置方式
Oct 30 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jquery each()源代码
2011/02/14 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
python strip()函数 介绍
2013/05/24 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
python数据化运营的重要意义
2019/11/25 Python
django有哪些好处和优点
2020/09/01 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
自立自强的名人事例
2014/02/10 职场文书
2014政务公开实施方案
2014/02/19 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
go 实现简易端口扫描的示例
2021/05/22 Golang
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android