Więc problem jest rzeczywiście jak zrobić Zawijanie wierszy w HTML5 canvas:
To wszystko jest do konwersji niektórych standardowych elementów HTML, które posiadają tekst i/lub zdjęcie do płótna HTML5. I niestety, metoda '.fillText()' nie jest wystarczająco inteligentna, aby rozbić fragment tekstu na mnie, więc muszę "ręcznie" wykryć każdą linię.
Co można zrobić, to measureText
, dodając kolejno jedno słowo na raz. Zmierz pierwsze słowo i jeśli pasuje do szerokości pojemnika (ctx2d.measureText(words).width <= containerWidth
), możesz dodać kolejne słowo i zmierzyć ponownie. Dopóki ciąg słów nie pasuje. Jeśli nie, musisz fillText
w następnym wierszu.
chodzi o wstawiony końca wiersza są szczegółowo przedstawione w HTML, albo \n
lub \r
znaków pola tekstowe lub elementów HTML, jak <br \>
. Dlatego przed pomiarem tekstu możesz podzielić go akapitami.
W pola tekstowe:
var paragraphs = textarea.value.split('\n');
W elementami nie tworzą:
var paragraphs = [];
// getting all <p> and elements in a typical HTML element
// as well as individual text nodes (they are just DOM-nodes),
// separated by <br /> elements
var innerNodes = nonFormElement.childNodes;
for (var i = 0, len = innerNodes.length; i += 1) {
// if a sub-element has some text in it,
// add the text to our list
var content = innerNodes[i].textContent;
if (content) {
paragraphs.push(content);
}
}
[. Może to być pomocne] (http://stackoverflow.com/questions/320184/how- to-prevent-long-words-from-breaking-my-div) – xan
Lub http://stackoverflow.com/questions/4719777/finding-line-breaks-in-textarea-that-is-word-wrapping-arabic- tekst – Theo
Co próbujesz osiągnąć na końcu? – katspaugh