Как мне обернуть текст в предварительный тег? - PullRequest
629 голосов
/ 29 октября 2008

pre теги очень полезны для блоков кода в HTML и для отладки вывода при написании сценариев, но как сделать перенос текста вместо вывода одной длинной строки?

Ответы [ 13 ]

899 голосов
/ 29 октября 2008

Ответ от этой страницы в CSS:

pre {
    white-space: pre-wrap;       /* Since CSS 2.1 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}
116 голосов
/ 23 мая 2011

Это прекрасно работает для переноса текста и сохранения пробелов в теге pre:

pre{
    white-space: pre-wrap;
}
53 голосов
/ 16 декабря 2013

Я обнаружил, что пропуск тега pre и использование пробела: предварительная переноска в div - лучшее решение.

 <div style="white-space: pre-wrap;">content</div>
19 голосов
/ 20 января 2014

Это то, что мне было нужно. Он не давал словам ломаться, но учитывал динамическую ширину в предварительной области.

word-break: keep-all;
16 голосов
/ 15 мая 2011

Предлагаю забыть пред и просто положить его в текстовую область.

Ваш отступ останется, и ваш код не будет переноситься словами в середине пути или чего-то еще.

Проще выделить и текстовый диапазон в текстовой области, если вы хотите скопировать в буфер обмена.

Ниже приведена выдержка из php, так что если вы не в php, то способ упаковки специальных символов html будет отличаться.

<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>

Информацию о том, как скопировать текст в буфер обмена в js, см. В Как скопировать в буфер обмена в JavaScript? .

Однако ...

Я только что проверил блоки кода стека и потока, и они обернулись в tag wrapped in <pre> tag with css ...</p> <pre><code>code { background-color: #EEEEEE; font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif; } pre { background-color: #EEEEEE; font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; width: auto; }

Также содержимое блоков кода stackoverflow выделено синтаксисом с использованием (я думаю) http://code.google.com/p/google-code-prettify/.

Это хорошая настройка, но сейчас я просто собираюсь с textareas.

15 голосов
/ 01 сентября 2018

Вкратце, это заставляет содержимое переноситься внутри тега «pre» без разрывов слов. Ура!

pre {
  white-space: pre-wrap;
  word-break: keep-all
}

Смотрите живой пример здесь .

14 голосов
/ 20 августа 2017

Я объединил ответы @richelectron и @ user1433454.
Работает очень хорошо и сохраняет форматирование текста.

<code><pre  style="white-space: pre-wrap; word-break: keep-all;">

13 голосов
/ 29 октября 2008

Вы можете либо:

pre { white-space: normal; }

для поддержки моноширинного шрифта, но добавьте перенос слов или:

pre { overflow: auto; }

, что позволит фиксированный размер с горизонтальной прокруткой для длинных строк.

7 голосов
/ 29 октября 2008

Попробуйте использовать

<pre style="white-space:normal;">. 

Или лучше скинуть CSS.

2 голосов
/ 07 июня 2019

попробуйте это:

pre {
    white-space: normal;
    word-wrap: break-word;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...