效果如图:

html:

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/image.css"/>
<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
<script type="text/javascript" src="js/image.js" ></script>
</head> <body>
<div class="content">
<div class="box">
<div class="img_box"><img src="img/1.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/2.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/3.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/4.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/5.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/6.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/7.jpg" alt="" /></div>
</div>
<div class="box">
<div class="img_box"><img src="img/8.jpg" alt="" /></div>
</div>
</div>
</body> </html>

css:

* {
padding:;
margin:;
} .content {
position: relative;
} .box {
float: left;
padding: 12px 0px 0px 10px;
} .img_box {
padding: 10px;
border: solid 1px black;
border-radius: 10px;
box-shadow: 5px 5px 5px 2px darkgray;
} .img_box:hover {
margin: 12px;
box-shadow: 3px 3px 3px 3px darkgray;
} img {
width: 400px;
} .toast {
position: fixed;
width: 170px;
height: 50px;
text-align: center;
line-height: 50px;
box-shadow: 5px 5px 5px 2px darkgray;
border-radius: 20px;
background: cornflowerblue;
top: 600px;
left: 600px;
color: white;
font-weight: bold;
font-size: 20px;
}

js:

$(document).ready(function() {
window.onload = init; //当图片加载完后
window.onscroll = sc; //当滚动进度条时
$(window).resize(init); //当浏览器页面大小改变时 function sc() {
//如果屏幕可见高度+滚动高度>=最后一张图片的高度+最后一张图片的一半,那么自动加载
if(($(window).scrollTop() + document.documentElement.clientHeight) >=
($(".box").last().position().top + $(".box").last().outerHeight() / 2)) {
//加载更多
for(var i = 1; i < 26; i++) {
$(".content").append("<div class=\"box\"><div class=\"img_box\"><img src=\"img/" + i + ".jpg\" /></div></div>");
}
$("body").append("<div class=\"toast\">加载中……</div>");
//设置延时自动关闭
setTimeout(function() { $(".toast").hide(200);}, 1000)
init();
}
} function init() {
/**
* 瀑布流图片代码分析
* 得到第一行图片个数、最短图片位置
* 个数:总长度/box长度
*/
//得到屏幕长度
var clientW = document.body.clientWidth;
//得到单个box的长度
var box = $(".box").outerWidth();
//得到一行的个数
var count = parseInt(clientW / box);
//把图片在页面中居中
$(".content").css({
marginLeft: (clientW - box * count) / 2
}) var start = 0;
var end = start + count;
//循环,把个数的高传入数组
var arr = [];
$(".box").slice(start, end).each(function() {
arr.push($(this).outerHeight());
}) //循环,每次都要改变最短图片的位置
$(".box").each(function(n) {
//得到最短的图片及它所出现的位置,从0开始
var minHei = Math.min.apply(null, arr);
var posit = $.inArray(minHei, arr);
//即将要出现的图片的左边距就是位置*box长度
var width = posit * box;
//如果是第一行后面的图片
if(n >= count) { //如果是除第 一行后的后面几张
$(this).css({
"position": "absolute",
"left": width,
"top": minHei,
});
arr[posit] += $(this).outerHeight();
}
})
} })

jquery+javaScript完成瀑布流图片页面效果的更多相关文章

  1. jQuery实现AJAX定时刷新局部页面实例

    本篇文章通过两种方法实例讲解ajax定时刷新局部页面,当然方法有很多种,也可以不使用ajax来刷新页面,可以使用jquery中的append来给指定内容加东西,但是都不太实用,最实用的方法还是ajax ...

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

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

  3. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  4. 元素视差方向移动jQuery插件-类似github 404页面效果

    原文地址:http://www.xuanfengge.com/shake.html 前言: 视差滚动,大家也许并不陌生.但是对于视差方向移动,你是否有见过效果呢?看官请进来瞧瞧~ demo : 轩枫阁 ...

  5. 使用 JavaScript 的 HTML 页面混合、根据在下拉列表框中选择的内容,决定页面效果,用户在下拉列表框中选择页面将要使用的背景颜色

    查看本章节 查看作业目录 需求说明: 根据在下拉列表框中选择的内容,决定页面效果 用户在下拉列表框中选择页面将 要使用的背景颜色 当用户选择橙色时,页面背景将显示为橙色 实现思路: 用表单 <s ...

  6. jquery实现简单瀑布流布局

    jquery实现简单瀑布流布局 是开头都会说的原理 瀑布流布局有两种,一种是固定列,一种是非固定列.在此主要记述第一种的实现. 固定列的特征是:无论页面如何缩放,每行的总列数都一致. 一行4列的瀑布流 ...

  7. javascript仿天猫加入购物车动画效果

    javascript仿天猫加入购物车动画效果   注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...

  8. 利用jquery+iframe做一个ajax上传效果

    以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...

  9. Ajax+json+jquery实现无限瀑布流布局

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. Windows重启网络命令

    netsh winsock reset ipconfig /flushdns

  2. 月四 周2 iii

    同样发生于今天 今天做的一道题引起了我对<电波女与青春男>的回忆 如果说光鸟鸟和电波女对我来说有什么共同之处, 那应该是体验过程我都很认真吧 我还是很喜欢入间人间的书, 不过那本妹主题的新 ...

  3. 学习Python的ABC模块(转)

    http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...

  4. sprint2总结

    在sprint第二阶段的学习过程中,前期和后期在学校网络的支持下我们成功的延迟了把代码上传github的时间,在我们自己感觉上看,完成项目的质量比较理想,在经过sprint第一阶段的学习后,部分上的问 ...

  5. Object C中Block用法

    先了解定义C语言的函数指针! int sum (int x, int y) { return x+ y; } // 定义函数 int (*p)(int, int) = sum; NSLog(, )); ...

  6. LINUX端口查看

    e切依燃   LINUX端口查看 查看文件数 ls | wc -w lsof -i:80

  7. vuejsLearn--- -- 怎么查看、修改、追加数据---->data对象

    实例观察的数据对象.可以用一个新的对象替换.实例代理了它的数据对象的属 我们现在对data2添加几项 使用数组push()追加 但是直接这样不能进行数组操作 var data2 = { city: ' ...

  8. vmware rdm

    RDM即裸磁盘映射,基本思想就是将host的磁盘直接映射给虚拟机使用   需要讨论的是: 1.rdm磁盘是否允许设置为共享,即可以映射给多个虚拟机使用(vmware不可用)   在 vSphere W ...

  9. 自动打开Accesibility Service 可以自动安装APP

    package com.venscor.helloworld;import java.io.BufferedReader;import java.io.IOException;import java. ...

  10. Windows Server 2008 R2组策略创建用户桌面快捷方式

    问题: 如何让所有域用户桌面有一个公司共享的快捷方式,让所有域用户直接双击就能打开公司共享. 解决办法: 1.创建一个zhuyu组织单元 ----- 在zhuyu组织单元创建一个域用户user1. 2 ...