Я не верю, что есть способ радикально переместить элемент, сохранив его внутри встроенного потока. Как вы уже упоминали, абсолютное позиционирование удаляет элемент из встроенного потока - таким образом перекрывая другой контент.
Вы могли бы использовать JQuery для клонирования содержимого и добавить его где-то рядом с вершиной. Вы также можете запросить высоту div и использовать JQuery для установки верхнего поля тела.
Обе из них позволят ему уважать встроенный поток, но он не использует CSS, на который ссылается ваш вопрос; если вы хотите, я могу помочь с JQuery.
Edit:
<script type="text/javascript">
window.onload = function() {
document.getElementById("content").style.marginTop = document.getElementById("errorDisplay").offsetHeight + "px";
}
</script>
я играл с этим в jsfiddle - Это было на самом деле вел себя странно ... но это было определенно близко к работе. Я использовал wrapper
и content
вместо того, чтобы манипулировать всем телом (просто немного безопаснее, я думаю.) Убедитесь, что вы добавили + "px"
в конце команды, иначе это не сработает.
Вот скрипка ...
http://jsfiddle.net/pVn2W/
Как вы можете видеть, это толкает всю обертку вниз, а не только «содержание» ... используя «содержание» или «обертка» в первый аргумент не меняет ничего странного.
Не совсем ваша модель, но все же упражнение в достижении тех же целей, - может быть, это поможет вам шаг ближе: P
@Alex: может быть, я не совсем понимаю, но почему вы не положили этот div в начале? –
, потому что этот div предназначен для отладки, и его содержимое может измениться до тех пор, пока весь документ не закончит отображение ... – Alex
@Alex: Вы понимаете, что вы можете отображать любой элемент в любом месте страницы независимо от его положения потока в источнике HTML? И для таких информационных divs 'position: fixed; top: 0;' кажется идеальным. И их действительно не нужно ставить как «тело» ребенка. –