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

众所周知,瀑布流大概分为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. JS批量替换内容中关键词为超链接,避开已存在的链接和alt、title中的关键词

    懂点seo的人都知道要给内容中关键词加上链接,形成站内锚文本链接,这对seo有很大的帮助. 思路就是在数据库中录入若干个关键词和关键词对应的链接,当然链接可以根据关键词的id自动生成,或者直接用关键词 ...

  2. jQuery选择器课堂随笔

      $(function(){   //并集选择器   /*   $("h2,ul").css("background","pink");* ...

  3. Codeforces 506E Mr. Kitayuta's Gift (矩阵乘法,动态规划)

    描述: 给出一个单词,在单词中插入若干字符使其为回文串,求回文串的个数(|s|<=200,n<=10^9) 这道题超神奇,不可多得的一道好题 首先可以搞出一个dp[l][r][i]表示回文 ...

  4. struts2接收参数的5种方法

    以下形式中最常用的是前两种 1. 使用Action的属性: 在action 里面定义要接收的参数,并提供相应的setter,getter,和提交参数的名称一致, 并不用做数据类型的转换相应提交方式可以 ...

  5. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  6. 【Zookeeper】源码分析之网络通信(一)

    一.前言 前面已经分析了请求处理链中的多数类,接着继续分析Zookeeper中的网络通信模块. 二.总体框图 对于网络通信模块,其总体框图如下所示 说明: Stats,表示ServerCnxn上的统计 ...

  7. SQL Server 2008R2 企业版 百度云下载地址

    SQL Server 2008R2 (百度云下载地址:链接: http://pan.baidu.com/s/1mi34II8 密码: yc1w)   ASP.NET MVC4.0+ WebAPI+Ea ...

  8. 每天一个Linux命令(15)--tail命令

    tail 命令从指定点开始将文件写到标准输出.使用  tail  命令的  -f  选项可以方便的查阅正在改变的日志文件 , tail  -f  filename  会把  filename  里最尾 ...

  9. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  10. Hello,Kubernetes

    什么是Kubernetes Kubernetes(k8s)是一款开源的以容器为中心的,用于跨主机集群自动部署(automating deployment),控制容器扩展/收缩(scaling)和管理容 ...