Я немного заржавел, но я разделяю вашу боль в попытках заставить div'ы правильно расширяться, чтобы содержать их содержимое.
Как объясняется на этой странице http://reference.sitepoint.com/css/relativepositioning, когда вы используете относительное позиционирование, вы фактически оставляете позади дыры, где раньше было содержимое. Я бы подумал об этом почти как об оптическом обмане - объект все еще сохраняет невидимый блок в его старом положении, но кажется, что он переместился.
Таким образом, в вашем случае 3 узла все еще расположены в верхнем левом углу графика, даже если они выглядят так, как будто они находятся вне его. Если вы избавитесь от всех абсолютных и относительных положений на узлах, вы увидите, что размер таблицы достаточно велик, чтобы соответствовать их исходным позициям.
Я бы рекомендовал, как правило, использовать только относительное положение, если вы перемещаете контент только на несколько пикселей. Почему они разработали CSS для такой работы, для меня загадка, но, возможно, это связано с ограничениями движков рендеринга? Когда вы используете абсолютное положение, у объекта больше нет «прямоугольника», занимающего место в документе. Его легко позиционировать, но, как вы заметили, это никак не повлияет на расстояние между объектами.
Я не уверен, какое именно приложение вы используете, но вам, возможно, придется проявить изобретательность, указав интервал. Если вы знаете размеры, вы всегда можете указать их, но я думаю, вам не так повезло. Вы действительно хотите установить положение относительно верхнего левого угла или просто относительно других узлов? Я бы, наверное, просто использовал старомодные поля. Это должно позволить вам указать позиции контента, которые должны уместиться в таблице при сохранении блочной модели. Затем, если вам нужен один из узлов для перекрытия, разместите его, используя абсолютное позиционирование.