1. Есть страница с дивной версткой. Я, используя библиотеку JQuery, создаю дивы с абсолютным позиционированием и помещаю их в существующие дивы. Абсолютное позиционирование нужно, чтобы новые дивы не смещали старые. Код выглядит примерно так:
    Код (JavaScript):
    $('<div></div>').prependTo($('#id'))
    .css('position', 'absolute')
    .css('top', 2 + 'px')
    .css('left', 3 + 'px')
    .text('hello');
    В спецификации написано, что абсолютно позиционированные блоки, если они вложены в другие блоки, имеют точку отсчета в верхнем левом углу родительского элемента. У меня так ну никак не получается. В firebug уже часа 4 ковыряюсь, не могу понять, в чем проблема. Некоторые вставленные дивы начинают отсчет от элемента, который является родительским тому блоку, который сам является родительским для них(т.е. как бы от родительского родительского), а некоторые вообще от верхнего левого угла экрана. Может кто-то с этим сталкивался? Не могу понять, как выбирается точка отсчета.

    Вообще, я до последнего момента думал, что абсолютно позиционированные элементы имеют точку отсчета в левом верхнем углу экрана, так еще написано на htmlbook.ru. Но в первоисточнике написано совсем по-другому.
  2. Иван Сагалаев

    04.08.2008 00:42

    В спецификации написано, что абсолютно позиционированные блоки, если они вложены в другие блоки, имеют точку отсчета в верхнем левом углу родительского элемента.

    В спецификации такого не написано. Точка отсчета у абсолютно позиционированных элементов находится в ближайшем "содержащем блоке" или, как я его называю, "стакане".

  3. Ну это же тоже самое. В данном случае ближайший содержащий блок - это блок, в котором находится абсолютно позиционированный див. То есть, другими словами, родительский блок.
  4. Иван Сагалаев

    04.08.2008 11:44

    Нет, содержащий блок и родительский блок — это разные вещи, несмотря на то, что по-русски звучат, как синонимы. Содержащий блок в CSS — это не любой родительский, а только тот, у которого position задан как absolute, fixed или relative. Если такого нет, то содержащий блок — это viewport (окно браузера, то есть).

    Я таки рекомендую прочитать ссылку, которую я дал. Лучше целиком, потому что там в "Относительном позиционировании" есть как раз пример того, о чем вы спрашиваете.

  5. Да, точно спасибо. Выставил родительскому блоку position relative и все зароботало.
  6. Кирилл

    08.11.2008 12:12

    Подскажите, пожалуйста!
    Разместил див абсолютом внутри другого дива(position relative).
    Как добиться растягивание родителя при увеличении внутреннего дива, чтобы он не вылезал наружу? Надеюсь понятно объяснил.
  7. alarin.blogspot.com

    08.11.2008 14:19

    overflow: hidden или float:left

    надеюсь правильно вас понял :)

bbcode