瀑布流布局代码一例


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 相关文章推荐
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
Aug 04 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
JavaScript中的noscript元素属性位置及作用介绍
Apr 11 Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 Javascript
vue2.0中click点击当前li实现动态切换class
Jun 21 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
微信小程序的日期选择器的实例详解
Sep 29 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中strtotime函数使用方法分享
2012/01/10 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
永不消失的title提示代码
2007/02/15 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
超级实用的8个Python列表技巧
2020/08/24 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
介绍一下Make? 为什么使用make
2016/07/31 面试题
关于圣诞节的广播稿
2014/01/26 职场文书
经销商订货会主持词
2014/03/27 职场文书
致共产党员倡议书
2014/04/16 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
Python初识逻辑与if语句及用法大全
2021/08/07 Python
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js