瀑布流布局代码一例


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核心读书有感之语句
Feb 11 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
详解基于node的前端项目编译时内存溢出问题
Aug 01 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
Apr 14 Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 Javascript
vue使用原生swiper代码实例
Feb 05 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
javascript各种复制代码收集
2008/09/20 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
angular.element方法汇总
2015/01/07 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python实现彩票系统
2020/06/28 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
员工培训心得体会
2013/12/30 职场文书
医院护士的求职信
2014/01/03 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
语文教学随笔感言
2014/02/18 职场文书
如何写好建议书
2014/03/13 职场文书
超市理货员岗位职责
2014/07/04 职场文书
2014年除四害工作总结
2014/12/06 职场文书
python tkinter实现定时关机
2021/04/21 Python
Golang数据类型和相互转换
2022/04/12 Golang