效果如图:

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. Unity中使用WebView

    Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...

  2. window系统下,简单的FTP上传和下载操作

    先假设有一FTP服务器,FTP服务器:qint.ithot.net,用户名:username   密码:user1234.在本地电脑D:盘创建一个文件夹"qint".将要上传的文件 ...

  3. warnin php startup in unknown on line 0:

    PHP Warning:  PHP Startup:  in Unknown on line 0 这种情况是因为扩展路径有问题导致的路径或错,或没有该扩展但ini中开启了此扩展

  4. An error occurred while processing an SVN command

    今天在使用SmartSVN的时候,遇到这个问题,反复几次,也没有得到解决,而且进入了死循环,一直在提示这个消息,即使在cleanup之后. 百度了一番之后,找到了解决办法: 把出错的文件在本地删除掉, ...

  5. 用jsonp格式的数据进行ajax post请求变成get

    因为 dataType 是 jsonp 而不是 json jsonp不支持POST跨域,所以会自动转成GET而关于jsonp为什么不支持post请求,百度到的答案是jsonp为动态的script,没有 ...

  6. 微信支付开发(7) H5支付

    关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html 本文 ...

  7. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  8. Spring操作指南-针对JDBC配置声明式事务管理(基于注解)

  9. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  10. 区间K 大数查询

      算法训练 区间k大数查询   时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列 ...