瀑布流布局代码一例


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与google map api结合使用 控件,监听器
Mar 04 Javascript
javascript中将Object转换为String函数代码 (json str)
Apr 29 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
理解js对象继承的N种模式
Jan 25 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
深入理解node exports和module.exports区别
Jun 01 Javascript
jQuery+Ajax实现限制查询间隔的方法
Jun 07 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
Vue前端开发规范整理(推荐)
Apr 23 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
php中的MVC模式运用技巧
2007/05/03 PHP
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python之django母板页面的使用
2018/07/03 Python
django如何实现视图重定向
2019/07/24 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
EJB timer的种类
2014/10/28 面试题
家居装修公司创业计划书范文
2014/03/20 职场文书
党建工作先进材料
2014/05/02 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
授权委托书(完整版)
2014/09/10 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android