Я не верю, что есть способ радикально изменить положение элемента, сохраняя его в потоке. Как вы уже упоминали, абсолютное позиционирование удаляет элемент из линейного потока - таким образом, перекрывая другое содержимое.
Однако вы можете использовать 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