Is there a way to make HTML properly treat \n line breaks? Or I have to replace them with <br/>?
<div class="text">
abc
def
ghi
</div>
You can use CSS white-space property for \n. You can also preserve the tabs as in \t.
For line break \n:
white-space: pre-line;
For line break \n and tabs \t:
white-space: pre-wrap;
document.getElementById('just-line-break').innerHTML = 'Testing 1\nTesting 2\n\tNo tab';
document.getElementById('line-break-and-tab').innerHTML = 'Testing 1\nTesting 2\n\tWith tab';
#just-line-break {
white-space: pre-line;
}
#line-break-and-tab {
white-space: pre-wrap;
}
<div id="just-line-break"></div>
<br/>
<div id="line-break-and-tab"></div>
As per your question, it can be done by various ways: - For example you can use:
If you want to insert a new line in text area , you can try this:-
Line Feed and Carriage return
<textarea>Hello Stackoverflow</textarea>
You can also
<pre>---</pre>Preformatted text.
<pre>
This is Line1
This is Line2
This is Line3
</pre>
Or,you can use
<p>----</p>Paragraph
<p>This is Line1</p>
<p>This is Line2</p>
<p>This is Line3</p>
Using white-space: pre-line allows you to input the text directly in the HTML with line breaks without having to use \n
If you use the innerText property of the element via JavaScript on a non-pre element e.g. a <div>, the \n values will be replaced with <br> in the DOM by default
innerText: replaces \n with <br>innerHTML, textContent: require the use of styling white-spaceIt depends on how your applying the text, but there are a number of options
const node = document.createElement('div');
node.innerText = '\n Test \n One '