2011-09-14 53 views
0

我有一个设置,我有一个绝对div设置为左侧位置和右侧位置以允许液体布局。这一切都很好地工作,但后来我遇到了一个问题,我有一个div下面有一些副本。问题是,副本的div应该低于绝对定位div。现在它出现在它上面,这是不正确的。div高于绝对div和溢出

我经常看到这个问题,因为在孩子被设置为绝对后折叠父母的div,但为了解决这个问题,我使用清除所有或溢出:父母隐藏,它停止发生崩溃。这一次围绕它的不崩溃,但它显示我的底部股利高于顶部股利。

这里是一个jsfiddle链接向您展示我的代码。

+0

在你的小提琴中,你有一些不匹配的标签。你能回去纠正吗?这可能是你的问题的原因。注意底部的红色div。整洁按钮也应该对你有所帮助。 – mrtsherman

+0

这是一个缺少标签,但这不是问题。对于那个很抱歉。仍然有其他问题。 – Chapsterj

+0

'clear'用于清除浮动,而不是绝对定位的元素。 –

回答

1

我不知道为什么你认为这会奏效。你有容器footer。这包含两个子div-footerWrapperfooterTerms

FooterWrapper绝对定位。所以它被排除在所有其他元素的流动之外。 footerTerms是footerWrapper的兄弟,自然地从其父,页脚的左上角开始。

为什么footerWrapper绝对定位好像你想让它影响你的页面内容流?使其相对或保持静态。

http://jsfiddle.net/mrtsherman/7cNf7/3/

<div class="footer"> 
    <div class="footerWrapper"> 
    </div> 
    <div class="footerTerms"> 
    </div> 
</div> 
+0

footerTerms不是FooterWrapper的兄弟。它在FooterWrapper之外。 FooterWrapper是绝对位置,所以我可以在其上设置一个左侧位置,并在其上有一个正确的位置。现在左侧设置为0,但这会改变。 – Chapsterj

+0

我想你有一个关于相对定位的问题,我总是可以设置相对div的左右位置。 – Chapsterj

+0

再次查看您的代码。 footerTerms确实是兄弟姐妹。我更新了我的答案,删除了中间的所有内容,以便您可以看到。 – mrtsherman

0

我有probabaly错误理解你想做的事,但如果你想要一个液态布局为什么不使用这样的事情:

CSS:

<style type="text/css"> 
    #footerWrapper { 
     background: #ccc; 
    } 
    #footerWrapper .section { 
     float: left; 
     width: 33%; 
    } 
    .clear:after { 
     content: " "; 
     display: block; 
     clear: both; 
     visibility: hidden; 
     line-height: 0; 
     height: 0; 
    } 
    html[xmlns] .clear { 
     display: block; 
    } 
    * html .clear { 
     height: 1%; 
    } 
</style> 

HTML:

<div id="footerWrapper"> 
    <div class="clear"> 
     <div class="section"> 
      Footer section 1<br /> 
      Footer section 1<br /> 
      Footer section 1 
     </div> 
     <div class="section"> 
      Footer section 2<br /> 
      Footer section 2<br /> 
      Footer section 2<br /> 
      Footer section 2 
     </div> 
     <div class="section"> 
      Footer section 3<br /> 
      Footer section 3<br /> 
      Footer section 3 
     </div> 
    </div> 
    <div class="terms"> 
     Terms 
    </div> 
</div> 

然后,如果您想将页脚挂到页面的右侧,例如您可以编辑#footerWrapper CSS并给它一个宽度和浮点数。

+0

谢谢酸柠檬,我不知道我得到这如何与我的结构相关。所以部分与dl元素相同,除了您选择使用div?那么你从哪里取得33%的数字?你说浮动所有部分左边位,然后你说如果需要将它钉在右边。我不能给footerwarpper一个宽度,因为它的liwuid基于我没有像素宽度。当左侧必须是左侧的指定数量的像素时,如何浮动左侧帮助,还必须跨越右侧浏览器的宽度,并在缩放浏览器时正确更新。 – Chapsterj

+0

是的,我选择使用divs代替dls,而33%是从做一些简单的数学,100/3,然后将结果四舍五入到33,这意味着无论footerWrapper有多宽,它们都会占用一个均匀空间量。如果将footerWrapper固定为宽度并向右浮动不合理,则忽略该评论。我只是认为这是你看完你的代码和结果页面后想要做的。重点是我上面的代码是一个页脚,它可以跨越浏览器宽度,其中3个部分占用甚至空间,其他文本下面有一个div。 –

+0

感谢酸柠檬解释您的设置。你的设置确实有效,但它不能解决问题,因为它能够在左侧设置指定的位置,然后将其固定在右侧。使用绝对定位可以实现这一点。但是因为它将它从其他元素的自然流动中解脱出来,所以我现在没有办法让它下面的元素知道它下面的位置应该在哪里。它很自然地想要在之前被设置为绝对的footerWrapper前面的对象位置。主要问题是如何解决这个问题来定位footerTerms。 – Chapsterj