<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
body,
html {
margin: 0;
padding: 0;
} .box {
float: left;
width: 240px;
padding: 10px;
box-shadow: 0 0 5px gray;
border: solid 1px gray;
} img {
width: 100%;
}
</style>
<script src="../jquery-2.2.4.min.js"></script>
<script>
$(window).load(function() {
locationImg();
}) $(window).scroll(function() {
if (slideToAdd()) {
var data = {"data":[{"src":"1.jpg"},{"src":"2.jpg"},{"src":"3.jpg"},
{"src":"4.jpg"},{"src":"5.jpg"},{"src":"6.jpg"},{"src":"7.jpg"},
{"src":"8.jpg"},{"src":"9.jpg"}]};
console.log(data); addElement(data.data);
locationImg();
}
})
//窗口变化
$(window).resize(function() {
locationImg();
}) function addElement(data){
$(data).each(function(index,value){
//动态添加元素
var box = $("<div>").addClass('box').appendTo('.containner');
var src = "../../测试/"+value.src;
console.log(src);
$('<img>').attr('src',src).appendTo(box);
})
}
/*ps:获取某个元素距顶部位置:$('.box').last.get(0).offsetTop get(0)获取指定index的dom元素*/
function slideToAdd() {
var lastBoxMiddleHeight = $(document).height() - $('.box').last().height() / 2;
lastBoxMiddleHeight = Math.floor(lastBoxMiddleHeight);
//滚动距离+ 文档可视高度 > 文档最后一张图片的一半
var scrollHeight = $(document).scrollTop() + $(window).height();
// console.log("lastheight:" + lastBoxMiddleHeight);
// console.log("scrollHeight:" + scrollHeight); return (scrollHeight > lastBoxMiddleHeight);
} function locationImg() {
//获取所有的box
var box = $('.box');
var heghtArray = [];
//计算一行可容纳多少张图
var imgNum = $(window).outerWidth(true) / box.eq(0).outerWidth(true);
imgNum = Math.floor(imgNum);
console.log(imgNum); //迭代排图
box.each(function(index, value) {
var thisValue = $(value);
//找到第一行所有高度
if (index < imgNum) {
var height = box.eq(index).outerHeight(true);
heghtArray[index] = height;
//屏幕变化时,设置回float
thisValue.css({
'position': "static",
'float': 'left',
});
} else {
//找到最短高度
var miniHeight = Math.min.apply(null, heghtArray);
var indexOfMini = heghtArray.indexOf(miniHeight);
//计算左边距离
var left = indexOfMini * box.eq(0).outerWidth(true);
//更改最短高度,这样下一个元素找第二高度
heghtArray[indexOfMini] = miniHeight + thisValue.outerHeight(true);
//设置绝对布局
thisValue.css({
'position': "absolute",
'top': miniHeight,
'left': left,
})
}
})
}
</script>
</head> <body>
<div class="containner">
<div class="box">
<img src="../../测试/1.jpg" />
</div>
<div class="box">
<img src="../../测试/2.jpg" />
</div>
<div class="box">
<img src="../../测试/3.jpg" />
</div>
<div class="box">
<img src="../../测试/4.jpg" />
</div>
<div class="box">
<img src="../../测试/5.jpg" />
</div>
<div class="box">
<img src="../../测试/6.jpg" />
</div>
<div class="box">
<img src="../../测试/7.jpg" />
</div>
<div class="box">
<img src="../../测试/8.jpg" />
</div>
<div class="box">
<img src="../../测试/9.jpg" />
</div>
<div class="box">
<img src="../../测试/1.jpg" />
</div>
<div class="box">
<img src="../../测试/2.jpg" />
</div>
<div class="box">
<img src="../../测试/3.jpg" />
</div>
<div class="box">
<img src="../../测试/4.jpg" />
</div>
<div class="box">
<img src="../../测试/5.jpg" />
</div>
<div class="box">
<img src="../../测试/6.jpg" />
</div>
<div class="box">
<img src="../../测试/7.jpg" />
</div>
<div class="box">
<img src="../../测试/8.jpg" />
</div>
<div class="box">
<img src="../../测试/9.jpg" />
</div>
</div>
</body> </html>

  

jQuery 动态添加瀑布流的更多相关文章

  1. jQuery动态网格瀑布流插件Masonry

    Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...

  2. jQuery淡入淡出瀑布流效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Jquery实现图片瀑布流思路-简单版

    目录 Jquery实现图片瀑布流思路-简单版 1.预备 2.开始 1.声明 2.主体 3.窗体大小改变事件 Jquery实现图片瀑布流思路-简单版 注意:本篇文章基于知道每张图片的实际尺寸的情况下 特 ...

  4. jQuery无限载入瀑布流 【转载】

    转载至 http://wuyuans.com/2013/08/jquery-masonry-infinite-scroll/ jQuery无限载入瀑布流 好久没更新日志了,一来我比较懒,二来最近也比较 ...

  5. 给Jquery动态添加的元素添加事件

    给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...

  6. [转载]给Jquery动态添加的元素添加事件

    原文地址:给Jquery动态添加的元素添加事件作者:小飞侠 我想很多人都会向我一样曾经 被新元素的事件绑定困惑很久也就是在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件. js的 ...

  7. jquery 动态添加表格行

    jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...

  8. jQuery动态添加删除select项

    // 添加 function col_add() { var selObj = $("#mySelect"); var value="value"; var t ...

  9. jquery 动态添加和删除 ul li列表

    今天需要实现一个jquery动态添加和删除  ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

随机推荐

  1. UnicodeEncodeError

    UnicodeEncodeError at /admin/shop/product/add/ 'ascii' codec can't encode characters in position 0-1 ...

  2. xcode 脚本编译,打包ipa

    1.清理工程 /usr/bin/xcodebuild -target targetName clean 2.编译 /usr/bin/xcodebuild -target targetName buil ...

  3. 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.dll" 上。解决方法

  4. 使用react native for android生成app

    参考文章 http://reactnative.cn/docs/getting-started.html http://www.lcode.org/react-native/ https://gith ...

  5. Eclipse全面提速小技巧

    转自:http://rongmayisheng.com/post/eclipse%E5%85%A8%E9%9D%A2%E6%8F%90%E9%80%9F 欢迎关注我的社交账号: 博客园地址: http ...

  6. form表单控件

    $("select option[value='" + queryparams['vendor'] + "']").attr("selected&qu ...

  7. 网页html结构右侧栏固定,左侧自适应大小。

    最近写了一个项目,写页面的结构,html树形结构是有header,container,footer部分,其中container部分是右侧栏是固定宽度,左侧是自适应宽度与屏幕高度. 第一次写的博客文章是 ...

  8. 10+优秀“分步引导”jQuery插件(转)

    很 多时候一个网站或者一个Web应用出品,为了让你的用户知道你的站点(或应用)有些什么?如何操作?为了让你的用户有更好的体验.往往这个时候都会给你的 站点(应用)添加一个分步指引的效果.然而这样的效果 ...

  9. Android 适配器

     Adapter是连接后端数据和前端显示的桥梁,是数据和UI(View)之间的纽带.     在常见的View(ListView,GridView)等地方都需要用到Adapter.数据.Adapter ...

  10. lmdb简介——结合MVCC的B+树嵌入式数据库

    lmdb简介 lmdb是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎.其主要特性有: 基于文件映射IO(mmap) 基于B+树的key-value接口 基于MVCC(Multi ...