Как узнать длину строки, ограниченной шириной блока и размером шрифта?

Здравствуйте. Суть проблемы в следующем. Есть прописанный в html div с текстом. Посредством JS нужно создать такой же блок, скопировать этот текст, но каждую строку вывести в отдельном блоке. Т.е. когда браузер автоматически делает перенос строки для текста исходного блока, в новом блоке - это не перенос строки, а отдельный блок. Соответственно, если меняется текст в исходном блоке, то автоматически меняются и блоки, созданные посредством JS. И/или если меняется размер шрифта (вместе с которым меняется и длина строки в браузере), то автоматически меняется размер шрифта и размер строки, помещенной в итоговый отдельный div.
Я прошу не готового решения, а лишь указания на какие-нибудь методы решения этой задачи. Оба блока имеют фиксированную width: 600px и изначальный шрифт 22px. Я, возможно, не там копаю, но, может быть есть какой-то метод определения, если можно так выразиться, потенциальной длины строки, выводимой в браузере, которая зависит от ширины блока и размера шрифта? Или это все фигня и нужно думать в другом направлении? Я могу клонировать текст, могу разбить его на отдельные слова и поместить эти слова в массив. Но когда дело доходит до перебора массива, впадаю в ступор и не понимаю, как именно перебирать этот массив, и что вообще с ним делать, чтобы добиться результата.

Для большей наглядности: допустим, браузер выводит текст блока в таком виде:

test test test test
test test test test

В исходном блоке - это один сплошной текст в div, а надо скопировать его в другой блок так, чтобы каждая строка была отдельным div'ом.

Странная и сумбурная задача, но, надеюсь, донес свою мысль)
  • Вопрос задан
  • 999 просмотров
Пригласить эксперта
Ответы на вопрос 3
sakrab
@sakrab
Не будь побежден злом, но побеждай зло добром...
Извините, а что за "порнографию" вы хотите сделать? Какой в этом смысл и для чего такие "позы" ?
Ответ написан
lazalu68
@lazalu68
Salmon
Сразу скажу, что я не знаю, как такое реализовать надёжно, но вот что-то такое получится, если попытаться решить задачу тем же способом, что и Уилл Паттерсон.

Суть в том, что после каждого слова вставляется пустой span. Далее происходит проверка в цикле: если верхний отступ текущего span равен отступу первого в строке span, значит текущее слово относится к текущей строке. Если больше - к следующей.

Колбэк, который передаётся аргументом в метод forEachTextLine, на входе получает 1) номер строки, 2) текст строки и 3) последний пустой span в этой строке.
Ответ написан
Комментировать
@Stepanya
Как-то так наверное
https://jsfiddle.net/tu4t9ctk/2/

С нулевой шириной работает неправильно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы