Я написал довольно простой скрипт, который будет принимать элементы (в этом случае основные элементы составляют <p>
) и введите их содержимое как пишущую машинку один за другим.Предварительно отформатированный текст для предотвращения переполнения
Проблема заключается в том, что, когда она достигает края промежуточного слова контейнера, он перерабатывает текст и переходит к следующей строке (например, перенос слов в любом текстовом редакторе).
Это, конечно же, ожидаемое поведение; однако я хотел бы предварительно форматировать текст, чтобы этого не произошло.
Я полагаю, что вставка <br>
до того, как слово, которое будет завершено, будет лучшим решением, но я не совсем уверен, что лучший способ сделать это - это поддерживать все размеры шрифта и ширины контейнера, а также поддерживать любые HTML-теги не повреждены.
Я рисую что-то, что связано с скрытым элементом <span>
, добавляя к нему текст постепенно, и проверка его ширины на ширину контейнера может быть на правильном пути, но я не совсем уверен, как на самом деле собрать это вместе. Любая помощь или предложения по лучшим методам будут оценены.
Edit:
мне удалось написать что-то, что рода работ с использованием JQuery, хотя это очень неаккуратно, и что еще более важно, иногда кажется, чтобы пропустить слова, и я могу» t выяснить почему. #content - это имя контейнера, а #ruler - это имя скрытого <span>
. Я уверен, что есть намного лучший способ сделать это.
function formatText(html) {
var textArray = html.split(" ");
var assembledLine = "";
var finalArray = new Array();
var lastI = 0;
var firstLine = true;
for(i = 0; i <= textArray.length; i++) {
assembledLine = assembledLine + " " + textArray[i];
$('#ruler').html(assembledLine);
var lineWidth = $('#ruler').width();
if ((lineWidth >= $('#content').width()) || (i == textArray.length)) {
if (firstLine) { var tempArray = textArray.slice(lastI, i); }
else { var tempArray = textArray.slice(lastI+1, i); }
var finalLine = tempArray.join(" ");
finalArray.push(finalLine);
assembledLine = "";
if (lineWidth > $('#content').width()) { i = i-1; }
lastI = i;
firstLine = false;
}
}
return finalArray.join("<br>");
}
У вас нет полного решения, но если вы добавляете слова по одному к диапазону, вы можете проверить высоту, чтобы выяснить, когда добавить разрыв строки, а затем добавить '
' или что-то добавить жесткий разрыв строки. Просто убедитесь, что '
' добавлен как один символ, а не как '<',
Можно ли начинать со всего текста в элементе' # content' в '' и сдвигать его по символу за раз в ''? Если это вызывает слишком много оживления, оберните каждого персонажа пробелами и просто измените класс. –