jquery练习之瀑布流
最近有空简单学习了下瀑布流,写完后想和大家一起分享下,但我知道我的代码有很多缺陷不足,希望多多包涵。(纯属兴趣非专业学习人士)
众所周知,瀑布流大概分为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练习之瀑布流的更多相关文章
- jQuery动态网格瀑布流插件Masonry
Masonry是一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发瀑布流界面效果.和CSS中float的效果不太一样的地方在于,float先水平排列,然后再垂直排列,使用Masonr ...
- jquery插件实现瀑布流
jquery插件实现瀑布流<!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...
- jQuery淡入淡出瀑布流效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Jquery实现图片瀑布流思路-简单版
目录 Jquery实现图片瀑布流思路-简单版 1.预备 2.开始 1.声明 2.主体 3.窗体大小改变事件 Jquery实现图片瀑布流思路-简单版 注意:本篇文章基于知道每张图片的实际尺寸的情况下 特 ...
- jQuery无限载入瀑布流 【转载】
转载至 http://wuyuans.com/2013/08/jquery-masonry-infinite-scroll/ jQuery无限载入瀑布流 好久没更新日志了,一来我比较懒,二来最近也比较 ...
- 基于jQuery的简易瀑布流实现
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- jQuery插件之-瀑布流插件
jquery.wookmark.js 一个实现瀑布流自适应宽度布局的jQuery插件—jquery.wookmark.js , wookmark使用非常简单到只需要一句代码就能实现,除此之外,当页面宽 ...
- jQuery 实现的瀑布流
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...
- jquery实现简单瀑布流
瀑布流这个概念一直不是很理解,看到别人可以实现,自己弄了很久还是不能实现就很纠结.瀑布流这根刺就一直扎在我心里,一次偶然的机会看到别人实现了瀑布流,我想我是不是也应该再继续把这个未完成的任务画一个圆满 ...
随机推荐
- U3d keyCode值对应的按键
值 对应键 Backspace 退格键 Delete Delete键 Tab TabTab键 Clear Clear键 Return 回车键 Paus ...
- 【WCF】服务并发中的“可重入模式”
WCF服务实例的并发模式是在服务实现类上,使用 ServiceBehaviorAttribute 的 ConcurrencyMode 属性来指定.其值由 ConcurrencyMode 枚举来界定,这 ...
- JAVA三大特性之一——封装
自学java已经有一段时间了,但是感觉对于很多知识点还是有必要总结和整理一下,下面我就来说一下我对JAVA三大特性之一——封装特性的认识和理解. 封装,从字面意思可以看出来,就是包装,也就是把我们写好 ...
- kafka c++客户端编译
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是 ...
- Web Service ,WCF以及Web API的对比
Web Service 1.基于SOAP和XML形式的返回数据. 2.只支出HTTP协议. 3.只能运行在IIS环境下. 4.不是开源的,但可以由任何支持xml的客户端下使用. WCF 1.基于SOA ...
- Ionicons的使用
安装 参考Ionicons npm install react-native-vector-icons --save 这时候可能会报错:npm WARN deprcated lodash@4.2.0: ...
- 前端安全(XSS、CSRF防御)
一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的 ...
- Delphi中TApplication详解
转自:http://blog.sina.com.cn/s/blog_4d6f55d90100bmv9.html TApplication是用于Delphi应用程序的类型,该类在单元forms中声明.T ...
- 每天一个Linux命令(10)--cat命令
--首先,恭喜你,这是第十个命令啦. --为啥第十个就要恭喜?没啥特别呀? --因为逢十进一啊! cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或 ...
- RAP在Linux 上的部署
首先讲一下,rap 是什么东西 ,rap 是一种项目的管理工具.用来管理项目的接口的. 首先是在Linux 上装了一个tomcat8 .当然jdk 的环境是必须要有的, 在rap的官网下载了war包 ...