У меня есть простая проблема, когда я думаю, что мне не хватает чего-то очевидного, но не могу найти ничего, чтобы понять поведение. У меня есть таблица, а затем тег ap и тег div. По умолчанию все теги одинакового уровня. Только внутренний-div в последнем div имеет абсолютное положение. Я думал, что абсолютная позиция во внутреннем-div будет абсолютно позиционирована относительно внешнего div (id = 'outer').
Поэтому я ожидаю, что дисплей будет состоять из вертикального порядка таблицы Text1 и, наконец, Text2. Это не то, что происходит. Таблица отображается как ожидалось, текст 1 также отображается после таблицы, как ожидалось. Тем не менее, текст 2 отображается поверх таблицы, потому что он занимает абсолютную позицию из тега body (или что-то другое - самый внешний тег). Зачем? Как получить Text2 для позиции после Text1. Мне нужно, чтобы Text2 был помещен абсолютно по какой-то причине. Удаление абсолютного позиционирования на div (id = 'inner') не является вариантом. Итак, как обойти это?
<table border="1" style="border-collapse:collapse;">
<tr>
<th>Header 1</th>
</tr>
<tr>
<td >09/12/2013 12:41 pm</td>
</tr>
</table>
<p style="display:block;">Text1</p>
<div id="outer">
<div id="inner" style="display:block;position:absolute;top:30px;">Text2</div>
</div>
Поскольку вы используете абсолютное положение, это происходит, снимается с DOM и выполняется поиск нового содержащего блока:
Содержащий блок для позиционируемой коробки устанавливается ближайшим позиционированным предком
Если вы не установите родительский объект с любым значением position
тогда div
отключен и принимает значения относительно другого родителя.
Установите положение на внешний div.
<div id="outer" style="position:relative">
<div id="inner" style="display:block;position:relative;top:30px;">Text2</div>
</div>
В совете попробуйте обработать ваши стили в файле CSS
вы добавили позицию: относительно #outer div?
Потому что вы поставили position:absolute;
код здесь:
<table border="1" style="border-collapse:collapse;">
<tr>
<th>Header 1</th>
</tr>
<tr>
<td >09/12/2013 12:41 pm</td>
</tr>
</table>
<p style="display:block;">Text1</p>
<div id="outer" style="position:relative">
<div id="inner" style="display:block;top:30px;">Text2</div>
</div>
Вы можете поставить position:relative
для вашего "внешнего" div или для вас "внутренний" div.
position:relative
делает работу родительским, он работает с другим значением, например,absolute
илиfixed
@Samir