Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перенос строки по словам (https://javascript.ru/forum/misc/41007-perenos-stroki-po-slovam.html)

yriiarutiunian 28.08.2013 11:58

Перенос строки по словам
 
Здравствуйте, есть некоторая длинная строка, необходимо реализовать разбиение строки с переносом чтобы данный текст вмещался в определенную ширину.

Текст вывожу raphael'ем когда подписываю оси raphael.text( x, y, 'текст')

или же есть же есть какое нибудь более простое решение например график рисовать через рафаель, а оси подписывать скажем под ним html'ем в блоке div

Яростный Меч 28.08.2013 14:23

Цитата:

Сообщение от yriiarutiunian
Здравствуйте, есть некоторая длинная строка, необходимо реализовать разбиение строки с переносом чтобы данный текст вмещался в определенную ширину.

общая идея такая (W - заданная ширина в пикселях):

1) "длину текста в пикселях" можно узнать так: помести текст в div (position: absolute) и зацени offsetWidth этого дива.
2) Топорное решение влоб - разбить текст на слова, далее в некоторую строку прибавлять по слову, вычислять ширину (п.1) и смотреть, не слишком ли большая (сравнивай с W). Когда слово не сможет вместиться, добавляй строку в копилку, и начинай так же собирать вторую строку. И т.д.
3) Много операций со строками. Можно оптимизировать - сначала помести весь текст в <div style="width:Wpx"><span></span></div> (внутрь спана), и посмотри span.getClientRects(). оно вернет набор прямоугольников, на которые разбился спан при переносе слов. width этих прямоугольников можно взять за первое приближение при разбивке, там интерполировать по количествам символов, найти ближайшие пробелы и т.д.


Часовой пояс GMT +3, время: 09:08.