-
Есть страница с дивной версткой. Я, используя библиотеку JQuery, создаю дивы с абсолютным позиционированием и помещаю их в существующие дивы. Абсолютное позиционирование нужно, чтобы новые дивы не смещали старые. Код выглядит примерно так:
Код (JavaScript):
В спецификации написано, что абсолютно позиционированные блоки, если они вложены в другие блоки, имеют точку отсчета в верхнем левом углу родительского элемента. У меня так ну никак не получается. В firebug уже часа 4 ковыряюсь, не могу понять, в чем проблема. Некоторые вставленные дивы начинают отсчет от элемента, который является родительским тому блоку, который сам является родительским для них(т.е. как бы от родительского родительского), а некоторые вообще от верхнего левого угла экрана. Может кто-то с этим сталкивался? Не могу понять, как выбирается точка отсчета.$('<div></div>').prependTo($('#id'))
.css('position', 'absolute')
.css('top', 2 + 'px')
.css('left', 3 + 'px')
.text('hello');
Вообще, я до последнего момента думал, что абсолютно позиционированные элементы имеют точку отсчета в левом верхнем углу экрана, так еще написано на htmlbook.ru. Но в первоисточнике написано совсем по-другому. -
В спецификации написано, что абсолютно позиционированные блоки, если они вложены в другие блоки, имеют точку отсчета в верхнем левом углу родительского элемента.
В спецификации такого не написано. Точка отсчета у абсолютно позиционированных элементов находится в ближайшем "содержащем блоке" или, как я его называю, "стакане".
-
Ну это же тоже самое. В данном случае ближайший содержащий блок - это блок, в котором находится абсолютно позиционированный див. То есть, другими словами, родительский блок.
-
Нет, содержащий блок и родительский блок — это разные вещи, несмотря на то, что по-русски звучат, как синонимы. Содержащий блок в CSS — это не любой родительский, а только тот, у которого position задан как absolute, fixed или relative. Если такого нет, то содержащий блок — это viewport (окно браузера, то есть).
Я таки рекомендую прочитать ссылку, которую я дал. Лучше целиком, потому что там в "Относительном позиционировании" есть как раз пример того, о чем вы спрашиваете.
-
Да, точно спасибо. Выставил родительскому блоку position relative и все зароботало.
-
Подскажите, пожалуйста!
Разместил див абсолютом внутри другого дива(position relative).
Как добиться растягивание родителя при увеличении внутреннего дива, чтобы он не вылезал наружу? Надеюсь понятно объяснил. -
overflow: hidden или float:left
надеюсь правильно вас понял :)

