У меня даже где-то валяется функция JS, которая это делает

Но я ее просто так не отдам. 1500 р.
Алгоритм простой, можешь сам сделать.
1. Передаю функции текст список ДИВов, которые будут использоваться.
2. Начинаю выводить текст по одному слову. Если у ДИВа появляются полосы прокрутки, то последнее слово - лишнее. Убираю его из вывода в первый ДИВ. Беру это слово, и начиная с него, вывожу текст во второй ДИВ. До тех пор, пока опять не появятся полосы прокрутки. Ну и так далее, пока либо все ДИВы не будут заполнены, либо не закончится текст.
3. И располагай ДИВы так, как удобно: рядом друг с другом, лесенкой, вокруг круга... Также они могут быть разного размера.
4. Грузи только данные не в ДИВ, а в переменную, которую будешь передавать этой функции.
5. При ресайзе БОДИ (если это приводит к ресайзу элементов) надо вызывать эту же функцию с использованными ранее парамерами, чтобы перерисовать всё.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)