pre
являются супер-полезными для кодовых блоков в HTML и для отладки вывода при написании сценариев, но как сделать текстовый перенос слов вместо печати одной длинной строки?
Как обернуть текст в тег pre?
Ответ 1
Ответ, с этой страницы в 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+ */
}
Ответ 2
Это отлично работает, чтобы обернуть текст и сохранить пробел в pre
-tag:
pre{
white-space: pre-wrap;
}
Ответ 3
Я обнаружил, что пропуская pre-тег и используя пробел: pre-wrap на div - лучшее решение.
<div style="white-space: pre-wrap;">content</div>
Ответ 4
Это то, что мне нужно. Он удерживал слова от взлома, но допускал динамическую ширину в области pre.
word-break: keep-all;
Ответ 5
Я предлагаю забыть pre и просто поместить его в текстовое поле.
Ваш отступы останутся, и ваш код не получит слово в середине пути или что-то в этом роде.
Легче также выбирать текстовый диапазон в текстовой области, если вы хотите скопировать в буфер обмена.
Ниже приведен фрагмент php, поэтому если ваш не в php, то способ, которым вы упаковываете специальные символы html, будет отличаться.
<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>
Информацию о том, как скопировать текст в буфер обмена в js см.: Как скопировать в буфер обмена в JavaScript?.
Однако...
Я только что просмотрел блоки кода stackoverflow и обернул их в <code> тег, завернутый в <pre> тег с помощью css...
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/.
Хорошая настройка, но Im просто идет с текстовыми полями.
Ответ 6
Вкратце, это заставляет содержимое переносить тег "pre" без слов. Ура!
pre {
white-space: pre-wrap;
word-break: keep-all
}
Смотрите живой пример здесь.
Ответ 7
Я объединил ответы @richelectron и @user1433454.
Он работает очень хорошо и сохраняет форматирование текста.
<pre style="white-space: pre-wrap; word-break: keep-all;">
</pre>
Ответ 8
Вы можете:
pre { white-space: normal; }
для сохранения моноширинного шрифта, но добавьте обертку или:
pre { overflow: auto; }
который позволит фиксированный размер с горизонтальной прокруткой для длинных строк.
Ответ 9
Попробуйте использовать
<pre style="white-space:normal;">.
Или лучше бросить CSS.
Ответ 10
Попробуйте это
pre {
white-space: pre-wrap; /* CSS 3 */
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+ */
padding:0px;
margin:0px
}
Ответ 11
Мне помогли следующее:
pre {
white-space: normal;
word-wrap: break-word;
}
Спасибо
Ответ 12
Лучший способ перекрестного браузера помог мне получить разрывы строк и показать точный код или текст: (chrome, Internet explorer, Firefox)
CSS
xmp{ white-space:pre-wrap; word-wrap:break-word; }
HTML:
<xmp> your text or code </xmp>
Ответ 13
попробуй это:
pre {
white-space: normal;
word-wrap: break-word;
}
Ответ 14
<pre>
-Element означает "предварительно форматированный текст" и предназначен для сохранения форматирования текста (или другого) между его тегами. Поэтому на самом деле не предусмотрено автоматическое обертывание слов или разрывы строк в <pre>
-Tag
Текст в элементе отображается шрифтом фиксированной ширины (обычно Courier), а сохраняет как пробелы, так и разрывы строк.
источник: w3schools.com, подчеркивает сделанный мной.