最近有空简单学习了下瀑布流,写完后想和大家一起分享下,但我知道我的代码有很多缺陷不足,希望多多包涵。(纯属兴趣非专业学习人士)

众所周知,瀑布流大概分为2种,一种是浮动式的瀑布流,一种是定位式的瀑布流,后者要稍微难于前者,但思维上大同小异。话不多说先上效果图。

1.首先浮动式的瀑布流,这个较简单,需要注意的是对追加图片列的UL的高度的比较,下面为代码

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动瀑布流</title>
<style type="text/css">
* {padding: 0px;margin: 0px;}
#box {width: 1000px;margin:50px auto;background:black;}
#box ul {float: left;width: 230px;margin: 10px;list-style-type:none;}
#box ul li img {width: 230px;}
</style>
</head>
<body>
<div id="box">
<ul></ul>
<ul></ul>
<ul></ul>
<ul></ul>
</div>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script> <script type="text/javascript">
function checkHeight(OUL){
var height=Infinity;
var Index=0;
for (var a = 0; a < OUL.length; a++) {
var now_height=OUL[a].offsetHeight;
if (now_height<height) {
height=now_height;
Index=a;
};
};
return Index;
} function CreateIMage(){
var Obx=document.getElementById('box')
var OUL=Obx.getElementsByTagName('ul');
for (var i = 2; i < 13; i++) {
var IMG=new Image();
IMG.src="data:images/"+i+".jpg";
var Oli=document.createElement('li'); Oli.append(IMG); var min_index = checkHeight(OUL);
OUL[min_index].append(Oli); };}; $(function(){ CreateIMage();
window.onscroll = function(){
var ST = document.documentElement.scrollTop || document.body.scrollTop;
var vH = document.documentElement.clientHeight;
if (ST+vH>document.body.scrollHeight*0.8) {
CreateIMage();
}; } }); </script>
</body>
</html>

2。定位式的瀑布流,这个和浮动式的差不多,需要注意的是对追加div的定位,而定位的重点是div的top和left的获取,下面为代码:

 <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>定位瀑布流</title>
<style type="text/css">
* {padding: 0px;margin: 0px;}
#box {margin: 50px auto;position: relative;}
</style>
<script type="text/javascript" src="js/jquery.js"></script> </head>
<body>
<div id="box"> </div> <script type="text/javascript">
function getColor(){
var colorValue="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
var colorArray=colorValue.split(",");
var _color="#";
for(var i=0;i<6;i++){ _color+=colorArray[Math.floor(Math.random()*16)] }
return _color;
} function checkHeight(obj){
var height=Infinity;
var index=0;
for (var a = 0; a < obj.length; a++) {
var now_height=obj[a]; if (now_height<height) {
height=now_height;
index=a;
};
}; return(index); }; $(function(){
var Obox=document.getElementById('box');
var VW=$(window).width();
var Default_width=240;
var div_num=Math.floor(VW/Default_width)-1;
//设置box的宽度使其居中
$("#box").css({"width":Default_width*div_num});
var arrHeight=[0,0,0,0];
CreateDiv(); function CreateDiv(){ //初始化一个高度数组 for (var i = 2; i < 13; i++) {
var oImg=new Image();
oImg.src="data:images/"+i+".jpg";
oImg.style.width=230+"px";
var Odiv=document.createElement("div");
// Odiv.style.backgroundColor=getColor();
// Odiv.style.width=230+"px";
// var t=Math.ceil(Math.random()*150+150);
// Odiv.style.height=t+"px";
Odiv.style.position="absolute";
Odiv.append(oImg); var min_index=checkHeight(arrHeight);
Odiv.style.top=arrHeight[min_index]+"px";
Odiv.style.left=min_index*Default_width+5+"px";
Obox.append(Odiv); arrHeight[min_index]+=(Odiv.offsetHeight+5);}
}; window.onscroll=function(){
var ST=document.documentElement.scrollTop || document.body.scrollTop;
var VH=$(window).height();
if (ST+VH>(document.body.scrollHeight)*0.8){ CreateDiv();
}; }
}); </script>
</body>
</html>

jquery练习之瀑布流的更多相关文章

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

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

  2. jquery插件实现瀑布流

    jquery插件实现瀑布流<!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

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

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

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

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

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

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

  6. 基于jQuery的简易瀑布流实现

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

  7. jQuery插件之-瀑布流插件

    jquery.wookmark.js 一个实现瀑布流自适应宽度布局的jQuery插件—jquery.wookmark.js , wookmark使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...

  8. jQuery 实现的瀑布流

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

  9. jquery实现简单瀑布流

    瀑布流这个概念一直不是很理解,看到别人可以实现,自己弄了很久还是不能实现就很纠结.瀑布流这根刺就一直扎在我心里,一次偶然的机会看到别人实现了瀑布流,我想我是不是也应该再继续把这个未完成的任务画一个圆满 ...

随机推荐

  1. python - bilibili(一)获取直播间标题

    近几年,直播平台蛮火的.小时候,经过各种日漫的洗礼,在直播平台自然而然的就盯上了B站. 目前还是python菜鸟一枚,各位大佬请轻拍. 最终效果图: 闲话不说,我们来一步步解析B站的弹幕. 工具:py ...

  2. ssh免密码和ssh-copy-id命令

    Linux系统配置免密码的方式: 1:ssh-keygen -t rsa 生成密钥 2:ssh-copy-id -i ~/.ssh/id_rsa.pub 127.0.0.1 把本机的公钥追到jifen ...

  3. linux编译内核

    ubuntu 14.04 编译内核出现unable to locate package ncurses-devel 问题的解决   首先,在make menuconfig的时候就会提示没有 nucrs ...

  4. Python求解登楼梯问题(京东2016笔试题)

    问题:假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法? 解析:从第15个台阶上往回看,有3种方法可以上来(从第14个台阶上一步迈1个台阶上来,从第13个台阶上一 ...

  5. JAVA设计模式:代理模式&& 装饰模式区别

    在前面学习了代理模式和装饰模式后,发现对两者之间有时候会混淆,因此对两者进行了区别和理解: 装饰模式你可以这样理解,就像糖一样,卖的时候商家大多要在外面包一层糖纸,其实原本还是糖. public in ...

  6. failed (1113: No mapping for the Unicode character exists in the target multi-byte code page), client: 127.0.0.1...

    nginx部署网站后,访问域名,网页显示  500 Internal Server Error ,经查看发现nginx的error.log中有报错: failed (1113: No mapping ...

  7. smarty模板调数据库并做添加删除修改和分页

    smarty模板只要就是实现分离效果所以每个功能都需要两个页面一个是HTML  和 PHP  两部分组成 使用smarty模板要在main文件夹下面创建login.php文本,要用smarty模板首先 ...

  8. ReactiveSwift框架

    最近项目不多,所以就研究了一下RxSwift和RAS,RAC以前项目中用过了,在这里我就先简单的介绍一下什么是RAS.总述:在RAC 5.0这个版本,有了很大的改动,API已经重新命名.在和Swift ...

  9. 浅谈Java的集合体系

    集合体系框架图 集合接口 Java集合类库将接口(interface)与实现(implementation)分离,如上图,Set是一个集合接口,而HashSet与TreeSet都是实现了Set接口的子 ...

  10. lucene倒排索引缓冲池的细节

    倒排索引要存哪些信息   提到倒排索引,第一感觉是词到文档列表的映射,实际上,倒排索引需要存储的信息不止词和文档列表.为了使用余弦相似度计算搜索词和文档的相似度,需要计算文档中每个词的TF-IDF值, ...