瀑布流布局代码一例


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 语法集锦 脚本之家基础推荐
Nov 15 Javascript
JSON 数据格式介绍
Jan 13 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
Jun 08 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
vue.js源代码core scedule.js学习笔记
Jul 03 Javascript
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
浅谈Angular7 项目开发总结
Dec 19 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 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/12/06 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
Javascript中对象继承的实现小例
2014/05/12 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
使用angular写一个hello world
2015/01/23 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
python插入排序算法实例分析
2015/07/03 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
python数值基础知识浅析
2019/11/19 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
一套.net面试题及答案
2016/11/02 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
我的生日感言
2015/08/03 职场文书
商业计划书之服装
2019/09/09 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL