瀑布流布局代码一例


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 相关文章推荐
用js自动判断浏览器分辨率的代码
Jan 28 Javascript
javascript实现的网页局布刷新效果
Dec 01 Javascript
js读取注册表的键值示例
Sep 25 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
在JavaScript中使用timer示例
May 08 Javascript
用户代理字符串userAgent可实现的四个识别
Sep 20 Javascript
深入浅析AngularJS中的module(模块)
Jan 04 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
jQuery实现的手风琴侧边菜单效果
Mar 29 jQuery
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
Nov 20 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
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面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python KMeans聚类问题分析
2018/02/23 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
详解Python 切片语法
2019/06/10 Python
python Shapely使用指南详解
2020/02/18 Python
基于opencv实现简单画板功能
2020/08/02 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
高职教师岗位职责
2013/12/24 职场文书
给同事的道歉信
2014/01/11 职场文书
初中政治教学反思
2014/01/17 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
党支部评议意见
2015/06/02 职场文书
指导老师鉴定意见
2015/06/05 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL