У вас должен быть алгоритм для определения, где разместить следующий элемент, учитывая набор существующих элементов и ограничивающий прямоугольник (ширина и высота контейнера).Я бы начал с простого английского и просто записал его сначала ручкой и бумагой - это проще, чем код.
Получив это, вы будете использовать функции jQuery width
и height
, чтобы получитьразмеры элементов для позиционирования, и я думаю, вам понадобится функция css
для установки top
/ left
.position
элементов должно быть "absolute"
, а position
содержащего элемента должно быть "relative"
.См. Все jQuery API методы.
Предполагается, что вы написали свой алгоритм компоновки как функцию calculateOffset(element, container)
, возвращающую смещенный литерал (например, {left: x, top: y}
), и что у вас есть список элементов jQueryelements
и jQuery-оболочку container
, вы можете сделать что-то вроде этого, чтобы расположить все:
elements.each(function() {
$(this).css(calculateOffset($(this), container));
});
Сложная часть, конечно же, пишет calculateOffset
.Для этого я рекомендую начать с чего-то простого, например, найти максимально возможное (самое низкое top
) место для размещения элемента, отдав предпочтение левой стороне (самое низкое left
), а затем перейти оттуда.