2013-10-04 152 views
0

我知道之前有类似的问题,但我已经尝试了所有我能找到的解决方案(涉及位置:相对于外部div和位置:绝对内部div),但我不能我得到红色的div对齐在绿色的下面,而不是堆叠在它的顶部。如何让这些div垂直堆叠?

HTML:

<body> 
    <div id="outer_div"> 
     <div id="title_div"> 
     </div> 

     <div id="main_div"> 
     </div> 
    </div> 
</body/> 

CSS:

body { 
    height: 1000px; 
    width: 1000px; 
    margin: 0; 
    padding: 0; 
} 

#outer_div { 

    position: relative; 
    height: 100%; 
    width: 100%; 
    background-color: blue; 
    display: block; 
}  

#title_div { 
    top: 0; 
    left: 0; 
    position: absolute; 
    height: 25%; 
    width: 100%; 
    background-color: green; 
    display: block; 
} 

#main_div { 
    top: 0; 
    left: 0; 
    position: absolute; 
    height: 20%; 
    width: 100%; 
    background-color: red; 
    display: block; 
} 

Here's the jsFiddle link.

谢谢!

+2

divs是块元素,所以自然地自上而下地流动 - 为什么你需要改变它们的默认位置?红色和绿色从0,0开始,那么你期望什么?删除一切,但颜色风格,也许高度和宽度,看看会发生什么 –

+0

我已经更新您的jsfiddle与可能的解决方案(http://jsfiddle.net/denisonluz/kFaVe/1/) –

+0

@ jenson-button-event,you '完全正确。这会教我编码的晚,使问题复杂化,然后试图抽象它。谢谢:) –

回答

2

为了让红格显示绿色的div下,执行以下操作

  1. #main_div删除"position: absolute;"#title_div
  2. 添加"float: left;"#main_div#title_div

这将导致各div尽可能地离开自己。如果它们不能并排放置,则第二个会自动推到第一个之下。

+2

你真的不需要做额外的浮动。浮游物被用来并排地取得事物,这与你想要的相反。但是,是的,这是答案 – russtuck91

0

对于两个内部div,您都具有相同的绝对顶部位置。有很多方法可以改变这种情况,包括允许div的自然排序,改变顶部位置等。