Вы можете полностью игнорировать CSS (для макета) и делать это так же, как это реализует flex. Без предоставления самого кода, вот основная идея (при условии горизонтального расположения):
- Когда вы добавляете ребенка, добавьте его справа от предыдущего родного брата. (
c.y = s.y+s.width
).
- Проверьте, превышает ли текущий дочерний элемент ширину родительского элемента. (
c.y + c.width > p.width
). Если это так, поместите его в следующую «строку».
Конечно, все усложняется в зависимости от того, хотите ли вы использовать TileContainer или FlowContainer . Должен ли макет выглядеть как сетка, или он должен быть более органичным, как перенос абзаца? (если все, что вам нужно, это обернуть абзацы, я думаю, что сделать все "float: left" сделает это за вас, но поправьте меня, если я ошибаюсь.). Предполагая идею TileContainer, вам просто нужно перебрать все дочерние элементы и убедиться, что они имеют одинаковую высоту / ширину (== максимальная дочерняя высота, максимальная дочерняя ширина), а затем выполнить шаги макета, упомянутые выше. Возможно, вы захотите поместить каждого дочернего элемента в контейнерный элемент div для более простого управления элементами, размер которых не изменяется.
И наконец, просто убедитесь, что вы прослушиваете любые события изменения размера окна, чтобы вы могли запустить алгоритм компоновки.
Проверьте алгоритмы в "TileBase.as" во Flex, если вам нужны советы, но может быть проще просто свернуть свои собственные.