2013-04-22 3 views
1

У меня есть два Div метки, как показано нижевыравнивать один DIV тег ниже другого тега

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

Я хочу, чтобы отобразить верхний 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; топ: 300px; <- высота' для 'lower'. –

+0

это динамический контент, я думаю, @cimmanon ответ решит проблему –

ответ

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

, это поможет только тогда, когда у нас есть статический контент. У меня есть динамический контент в любом случае спасибо за ответ –

Смежные вопросы