‹pre› не сохраняет пробелы

Почему:

<pre style="background:red">
line 1
</pre>

сделать так же, как:

<pre style="background:red">line 1</pre>

В первом есть еще два разрыва строки, но, похоже, браузер их игнорирует. Какое правило для этого?


person Alan    schedule 26.11.2019    source источник
comment
<br> добавит еще одну строку, поэтому она будет выглядеть примерно так: <pre style="background:red"><br>line 1<br></pre>   -  person Ramon de Vries    schedule 26.11.2019
comment
разрывы не имеют значения в html, как сказал @RamondeVries, вместо этого вы должны использовать ‹br›   -  person Alberto Sinigaglia    schedule 26.11.2019
comment
Согласно спецификации, в HTML синтаксис, начальный символ новой строки сразу после начального тега элемента <pre> удаляется.   -  person j08691    schedule 26.11.2019
comment
@AlbertoSinigaglia Вы когда-нибудь слышали о ‹pre›? Перерывы, черт возьми, имеют значение.   -  person Alan    schedule 26.11.2019
comment
@Алан не первый, как видишь   -  person Alberto Sinigaglia    schedule 26.11.2019
comment
@AlbertoSinigaglia А что насчет последнего?   -  person Alan    schedule 26.11.2019


Ответы (1)


Если текстовый узел начинается с пробела (пробел, новая строка), он будет игнорироваться анализаторами HTML. Кодирование новой строки в надлежащий объект HTML заставляет синтаксический анализатор подтвердить ее.

&#13; == carriage return

используйте это вместо этого:

<pre style="background:red">&#13;line 1</pre>

Тег pre сохранит все форматирование между ними, но не в начале.

Подробнее см. https://stackoverflow.com/a/15529725/6852641.

person ButchMonkey    schedule 26.11.2019
comment
Спасибо! Как насчет разрыва строки перед закрывающим тегом? - person Alan; 26.11.2019
comment
Вы можете прочитать больше здесь medium.com/@patrickbrosset / - person ButchMonkey; 26.11.2019