Есть ли способ заставить HTML правильно обрабатывать разрывы строк \n
? Или мне нужно заменить их на <br/>
?
https://jsfiddle.net/zawyatzt/
8 ответов
Это нужно для отображения новой строки и возврата каретки в html, тогда вам не нужно делать это явно. Вы можете сделать это в css, установив значение перед строкой атрибута white-space.
<span style="white-space: pre-line">@Model.CommentText</span>
Использование white-space: pre-line
позволяет вводить текст прямо в HTML с разрывами строк без использования \n
Если вы используете свойство innerText
элемента через JavaScript в элементе, отличном от pre, например a <div>
, значения \n
будут заменены в DOM на <br>
по умолчанию
innerText
: заменяет\n
на<br>
innerHTML
,textContent
: требуется использование стиляwhite-space
Это зависит от того, как вы применяете текст, но есть несколько вариантов
const node = document.createElement('div');
node.innerText = '\n Test \n One '
Вы можете использовать свойство CSS white-space
для \n
. Вы также можете сохранить вкладки, как в \t
.
Для разрыва строки \n
:
white-space: pre-line;
Для разрыва строки \n
и табуляции \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>
Просто и линейно:
<p> my phrase is this..<br>
the other line is this<br>
the end is this other phrase..
</p>
Вы можете использовать тег <pre>
<div class="text">
<pre>
abc
def
ghi
</pre>
abc
def
ghi
</div>
Вы можете использовать тег <pre>
:
<div class="text">
<pre>
abc
def
ghi
</pre>
</div>
Вам следует подумать о замене разрывов строк на <br/>
. В HTML разрыв строки будет означать только новую строку в вашем коде.
В качестве альтернативы вы можете использовать другие разметки HTML, например, размещение строк в абзацах:
<p>Sample line</p>
<p>Another line</p>
Или другие оболочки, например <div>sample</div>
с атрибутом CSS: display: block
.
Вы также можете использовать <pre>
. HTML-стиль содержимого pre
будет игнорироваться. Другими словами, он будет отображать чистый HTML с обычными разрывами строк \n
.
Согласно вашему вопросу, это можно сделать разными способами: - Например, вы можете использовать:
Если вы хотите вставить новую строку в текстовую область, вы можете попробовать следующее: -
Перевод строки и
возврат каретки
<textarea>Hello Stackoverflow</textarea>
Вы также можете
<pre>---</pre>
предварительно отформатировать текст.
<pre>
This is Line1
This is Line2
This is Line3
</pre>
Или вы можете использовать
<p>----</p>
абзац
<p>This is Line1</p>
<p>This is Line2</p>
<p>This is Line3</p>
Примечание: если вы хотите использовать
\n
, вам необходимо установить сервер, например Xampp или Apache, для поддержки языка на стороне сервера.
Похожие вопросы
Связанные вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].