2013-04-22 129 views
1

我有兩個div標籤,如下對齊一個div標籤下面的另一個標籤

<div id="outer"> 
    <div id="lower">hi</div> 
    <div id="upper">i m on top</div> 
</div> 

我想首先顯示上格,其次是低格,但我不能在HTML改變聲明的順序。

我使用以下CSS

#outer{ 
    position:relative; 
} 
#upper{ 
    position:absolute; 
    top:0; 
} 

但上部與下部重疊。

UPDATE

我解決的情況下方式,因爲它不會干擾設計

<html> 
    <body> 
    <div id="visible"></div> 
    <div id="bottom">displayed in second line</div> 
    <div id="top" style="display:none;"> 
     displayed in first line 
    <script> 
     document.getElementById("visible").innerHTML=document.getElementById("top").innerHTML 
     </script> 
    </div> 
    </body> 
</html> 

通過使用上面的代碼,我完全解決了我的使用情況。感謝大家給了答案

+1

如果你知道'upper'的高度,你可以使用'position:absolute;頂:300像素; < - 低於'的高度。 – 2013-04-22 15:00:44

+0

它是一個動態內容我猜@cimmanon答案將解決問題 – 2013-04-22 15:50:53

回答

0

如果你的兩個元素都是未知高度(很可能如果這是動態內容),那麼Flexbox將允許您重新排列元素。

http://tinker.io/aa4b2

#outer { 
    display: -moz-box; 
    display: -webkit-flexbox; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 
    -moz-box-orient: vertical; 
    -moz-box-direction: normal; 
    -webkit-flex-direction: column; 
    -ms-flex-direction: column; 
    flex-direction: column; 
    -webkit-flex-align: start; 
    -ms-flex-align: start; 
    -webkit-align-items: flex-start; 
    align-items: flex-start; 
} 

#lower { 
    -moz-box-ordinal-group: 2; 
    -webkit-flex-order: 1; 
    -ms-flex-order: 1; 
    -webkit-order: 1; 
    order: 1; 
} 

不利的一面是Flexbox的這種支持是相當低的。這應該適用於Chrome,Firefox,Opera,Safari和IE10。 http://caniuse.com/#feat=flexbox

1

這裏有兩種解決方案:

你知道上div的高度:

#outer { 
    position: relative; 
} 
#lower, #upper { 
    position: absolute; 
    left: 0;  
} 
#lower { 
    top: 40px; /* upper div's height */ 
} 
#upper { 
    top: 0; 
    height: 40px; 
} 

你知道外div的高度:

#outer { 
    position: relative; 
    height: 300px; 
} 
#lower, #upper { 
    position: absolute; 
    left: 0; 
} 
#upper { 
    top: 0; 
} 
#lower { 
    bottom: 0; 
} 
+0

這將有助於只有當我們有靜態內容我有動態內容反正謝謝你的答案 – 2013-04-22 15:52:25