jquery+javaScript完成瀑布流图片页面效果
效果如图:

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完成瀑布流图片页面效果的更多相关文章
- jQuery实现AJAX定时刷新局部页面实例
本篇文章通过两种方法实例讲解ajax定时刷新局部页面,当然方法有很多种,也可以不使用ajax来刷新页面,可以使用jquery中的append来给指定内容加东西,但是都不太实用,最实用的方法还是ajax ...
- jQuery淡入淡出瀑布流效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态
查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...
- 元素视差方向移动jQuery插件-类似github 404页面效果
原文地址:http://www.xuanfengge.com/shake.html 前言: 视差滚动,大家也许并不陌生.但是对于视差方向移动,你是否有见过效果呢?看官请进来瞧瞧~ demo : 轩枫阁 ...
- 使用 JavaScript 的 HTML 页面混合、根据在下拉列表框中选择的内容,决定页面效果,用户在下拉列表框中选择页面将要使用的背景颜色
查看本章节 查看作业目录 需求说明: 根据在下拉列表框中选择的内容,决定页面效果 用户在下拉列表框中选择页面将 要使用的背景颜色 当用户选择橙色时,页面背景将显示为橙色 实现思路: 用表单 <s ...
- jquery实现简单瀑布流布局
jquery实现简单瀑布流布局 是开头都会说的原理 瀑布流布局有两种,一种是固定列,一种是非固定列.在此主要记述第一种的实现. 固定列的特征是:无论页面如何缩放,每行的总列数都一致. 一行4列的瀑布流 ...
- javascript仿天猫加入购物车动画效果
javascript仿天猫加入购物车动画效果 注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...
- 利用jquery+iframe做一个ajax上传效果
以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...
- Ajax+json+jquery实现无限瀑布流布局
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- 尚德,国美 interview summary
尚德 Q:SDWebimage源代码,cell重用.先请求出来小头像,再请求出大头像?怎么处理? SDWebImageDownloader 直接给cell设置图片会怎样 A:图片URL相同,比较nsd ...
- django学习笔记
django笔记----建立疾病预测系统的web应用 @buyizhiyou 工作环境:ubuntu16.04LTS+ ...
- Confirm the Ending
题目 检查一个字符串(str)是否以指定的字符串(target)结尾. 如果是,返回true;如果不是,返回false. 解决思路 利用substr即可 答案 function confirmEndi ...
- Object C中Block用法
先了解定义C语言的函数指针! int sum (int x, int y) { return x+ y; } // 定义函数 int (*p)(int, int) = sum; NSLog(, )); ...
- 针对功能权限(url访问)如何避免越权访问
你可以用request获得之前的页面路径:Request.getHeader("Referer");然后你可以判断一下,这个是字符串类型的. 如果是需要登录的,你可以从sessio ...
- Android JavaMail
一.简介 JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序. JavaMail API提供了一组抽象类定义构成一个邮件系统的对象.它是阅读,撰写和发送电子信息的可选 ...
- java字典序排序
import java.util.Comparator; import java.util.ArrayList; import java.util.Collections; public class ...
- mysql 工具箱
创建测试数据 存储过程: delimiter // create procedure sp_generate_data() begin ; do set @created_time := date_a ...
- Android中如何查看内存
文章参照自:http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-a ...
- php7.0.12 laravel 链接sqlserver数据库
https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载最后一个,然后这个工具可以将dll扩展下载下来,选择一个空白的文件夹就 ...