在jQuery中增长div的问题(相对和绝对div)

时间:2012-05-26 14:55:48

标签: jquery css

我有一个父div包含一些随机图片,这些图片在7个或更多的子div中。我的目标是当子div随机填充它时让父div扩展。注意子div可以是0到10或更多。 我遇到的问题是父div不会增长。我尝试使用CSS和jquery,这是我到目前为止 jquery的

var margin = 5;

var blocks = [];
function align() {
$('.block').each(function(i){
    var min = Array.min(blocks);
    var index = $.inArray(min, blocks);
    var posleft = margin+(index*(300+margin));
    $(this).css({
        'left':(posleft+2)+'px',
        'top':min+'px'
    });
    blocks[index] = min+$(this).outerHeight()+margin;
}); 
}

function divlayOut() {
blocks = [];
for(var i=0;i<3;i++)
{
    blocks.push(margin);
}
align();
}

Array.min = function(array) {
return Math.min.apply(Math, array);
}; 

HTML

<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<style type="text/css">
.block{
width: 250px;
float:left; 
position:absolute;
}
.parent{
width: 800px; 
float:left; 
padding:10px 0px 0px 10px;
position:relative; 
}
</style>

</head>
<body onload="align();">
<div class="parent">
<div class="block">pic1 size H 100 x W 80</div>
<div class="block">pic1 size H 80 x W 800</div>
<div class="block">pic1 size H 300 x W 100</div>
<div class="block">pic1 size H 110 x W 90</div>
</div>

希望下面的图片有助于明确我的目标

enter image description here

3 个答案:

答案 0 :(得分:0)

你是浮动你的照片,对吗?阅读:http://www.quirksmode.org/css/clearing.html

花车让他们的父母“忘记了元素”,从而没有扩大。

总结:将overflow: auto;添加到父级,如下所示:

.parent {overflow: auto;}

答案 1 :(得分:0)

因为子块是绝对定位的,所以父块永远不会扩展。您可以使用Jquery手动计算父块的高度(使用child_block_height,每行块数和block_width参数),或者您可以对子块使用float:left属性(非绝对定位)。

另一种方法是使用内联块元素:http://blog.mozilla.org/webdev/2009/02/20/cross-browser-inline-block/

我通常使用以下方式:

<style>
  .parent {
    overflow:hidden;
    *height:1%;
  }
  .block {
    float:left;
    width:100px;
    height:100px;
  }
</style>
<div class="parent">
  <div class="block"></div>
  <div class="block"></div>
</div>

答案 2 :(得分:0)

孩子将需要绝对定位?

看看这个使用float:left和css clearfix技巧的小提琴。

http://jsfiddle.net/5FXs2/