2013-02-08 3 views
4

Рассмотрим простой example с HTMLКак выровнять абсолютный DIV неизвестной высоты вне «относительного» родителя CSS?

<div class="parent"> 
    <div class="child"> 
    </div> 
</div> 

и CSS

.parent{ 
    position:relative; 
    background:red; 
    width:200px; 
    height:40px; 
} 
.child{ 
    position:absolute; 
    top:40px; 
    left:30px; 
    width:70px; 
    height:70px; 
    background:blue; 
} 

разместить DIV с абсолютной позиции только под его родителя (с относительным положением). enter image description here

В этом примере я сравнил верхнюю часть абсолютного с родительским относительным.

Как выровнять абсолютный DIV только под родителем, когда высота неизвестна (как родительский, так и дочерний)?

+0

Ответ на Саймона ниже будет исправить вашу проблему, у меня есть вопрос, почему это необходимо, в первую очередь, хотя? Мне кажется, что вы должны просто иметь контейнер с двумя детьми в нем, один ребенок - это красный ящик, другой - синий ящик? – Michael

ответ

11

Не думаю, что this будет работать сам, но это, кажется:

html, body { 
    height: 100%; 
} 
.parent{ 
    position:relative; 
    background:red; 
    width:200px; 
    height:40px; 
} 
.child{ 
    position:absolute; 
    top:100%; 
    left:30px; 
    width:70px; 
    height:70px; 
    background:blue; 
} 
+0

Ну, с другой стороны, это совершенно очевидно, выравнивание по центру с «left: 50%» и отрицательным полем также работает, так почему же это не так? :) – Simon

+0

Ваша идея работает хорошо, я не думал, что 'top: 100%' может сыграть этот трюк :) – Googlebot

1

вы можете использовать отрицательное значение для дна, например. bottom: -100px

EDIT: вот лучшее решение: http://jsfiddle.net/mqy4z/3/ - положение, задаваемое ребенка к top:100%

+0

что, если высота абсолютного DIV тоже неизвестна? – Googlebot

+0

Неизвестная высота здесь. Вы не можете установить размер пикселя, если вы не знаете высоту. – War10ck

0

Попробуйте поместить оба Div находится в вашем HTML файле под Афоризм:

<div class="parent"> 
</div> 

<div class="child"> 
</div> 
3

Проверить это ..

HTML: 
------- 

<div class="parent"> 
</div> 
<div class="child"> 
</div> 

CSS: 
----- 
.parent{ 
    position:relative; 
    background:red; 
    width:200px; 
    height:40px; 
} 
.child{ 
    position:absolute; 
    top:auto; 
    left:30px; 
    width:70px; 
    height:70px; 
    background:blue; 
} 

(Example)

+0

Хм, если я отрегулирую свою скрипку на это, похоже, что она работает неправильно: http: // jsfiddle .net/mqy4z/5/ – Simon

+0

где твоя скрипка? – Vinay

+0

@simon вы пропустите html, чтобы разделить оба div. – Vinay

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