瀑布流布局代码一例


Posted in Javascript onApril 11, 2014
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>瀑布流布局代码</title> 
<script type="text/javascript" src="js/jquery.js"></script> 
<style type="text/css"> 
body, div, img, h1, h2, h3, h4, h5, h6 { padding:0px; margin:0px; } 
img { border:none; } 
.wrapper { width:960px; margin:0 auto; } 
#con1_1 { position:relative; } 
#con1_1 .product_list { position:absolute; left:0px; top:0px; padding:10px; background:#eee; } 
.product_list img { width:200px; display:block; } 
.product_list h2 { padding:5px 0px; font-size:12px; text-align:center; color:#333; } 
</style> 
</head> 
<body> 
<div class="wrapper"> 
<h3>这是正文的标题部分</h3> 
<div id="con1_1"> 
<div class="product_list"> <a href="#"><img src="images/img1.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img2.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img3.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img4.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img5.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img6.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img7.jpg"></a> 
<h2>图片高度</h2> 
</div> 
<div class="product_list"> <a href="#"><img src="images/img8.jpg"></a> 
<h2>图片高度</h2> 
</div> 
</div> 
<h3>这行文字的位置首先要用js去计算下上面内容的高度了</h3> 
</div> 
</body> 
<script type="text/javascript"> 
/* 
原理:1.把所有的li的高度值放到数组里面 
2.第一行的top都为0 
3.计算高度值最小的值是哪个li 
4.把接下来的li放到那个li的下面 
*/ 
var margin = 10;//设置间距 
var li=$(".product_list");//区块名称 
var li_W = li[0].offsetWidth+margin;//取区块的实际宽度 
function liuxiaofan(){ 
var h=[];//记录区块高度的数组 
var n = 960/li_W|0; 
for(var i = 0;i < li.length;i++) { 
li_H = li[i].offsetHeight;//获取每个li的高度 
if(i < n) {//n是一行最多的li,所以小于n就是第一行了 
max_H =Math.max.apply(null,h); 
h[i]=li_H;//把每个li放到数组里面 
li.eq(i).css("top",0);//第一行的Li的top值为0 
li.eq(i).css("left",i * li_W);//第i个li的左坐标就是i*li的宽度 
} 
else{ 
min_H =Math.min.apply(null,h) ;//取得数组中的最小值,区块中高度值最小的那个 
minKey = getarraykey(h, min_H);//最小的值对应的指针 
h[minKey] += li_H+margin ;//加上新高度后更新高度值 
li.eq(i).css("top",min_H+margin);//先得到高度最小的Li,然后把接下来的li放到它的下面 
li.eq(i).css("left",minKey * li_W); //第i个li的左坐标就是i*li的宽度 
} 
$("h2").eq(i).text("高度:"+li_H);//把区块高度值写入对应的区块H2标题里面 
} 
max =Math.max.apply(null,h) ; 
$("#con1_1").css("height",max); 
} 
/* 使用for in运算返回数组中某一值的对应项数(比如算出最小的高度值是数组里面的第几个) */ 
function getarraykey(s, v) {for(k in s) {if(s[k] == v) {return k;}}} 
/*这里一定要用onload,因为图片不加载完就不知道高度值*/ 
window.onload = function() {liuxiaofan();}; 
window.onresize = function() {liuxiaofan();}; 
$(function(){ 
$(".product_list").hover(function(){ 
$(this).css("background-color","#ddd"); 
},function() { 
$(this).css("background-color","#eee"); 
}); 
}); 
</script> 
</html>
Javascript 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
JS类的封装及实现代码
Dec 02 Javascript
关于this和self的使用说明
Aug 01 Javascript
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
Jan 26 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
AngularJS中比较两个数组是否相同
Aug 24 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
webpack之devtool详解
Feb 10 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
May 03 Javascript
js实现拾色器插件(ColorPicker)
May 21 Javascript
javascript读写json示例
Apr 11 #Javascript
javascript如何判断输入的url是否正确
Apr 11 #Javascript
javascript判断office版本示例
Apr 11 #Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 #Javascript
jquery解析xml字符串简单示例
Apr 11 #Javascript
代码获取历史上的今天发生的事
Apr 11 #Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 #Javascript
You might like
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php获取系统变量方法小结
2015/05/29 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
基于Python绘制个人足迹地图
2020/06/01 Python
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
单位工作证明书格式
2014/10/04 职场文书
教师个人自我评价
2015/03/04 职场文书
外贸英文求职信范文
2015/03/19 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
python实现简单的井字棋
2021/05/26 Python
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
vue选项卡切换的实现案例
2022/04/11 Vue.js