pre
标签对于HTML中的代码块和编写脚本时的调试输出非常有用,但是如何使文本自动换行而不是打印出一条长行呢?
答案,从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+ */ }
这非常适合在pre
-tag中包装文本和维护空格:
pre{ white-space: pre-wrap; }
我发现跳过pre标签并使用white-space:在div上预先包装是一个更好的解决方案.
content
最简洁的是,这会强制内容包含在"pre"标签内而不会破坏单词.干杯!
pre { white-space: pre-wrap; word-break: keep-all }
在这里查看实例.
这就是我需要的.它保持单词不会破坏,但允许前区域的动态宽度.
word-break: keep-all;
我建议忘记前,然后把它放在textarea.
您的缩进将保留,并且您的代码不会在路径或其他内容中包装.
如果要复制到剪贴板,也可以更轻松地在文本区域中选择文本范围.
以下是一个php摘录,所以如果你不在PHP那么你打包html特殊字符的方式会有所不同.
有关如何在js中将文本复制到剪贴板的信息,请参阅:如何使用JavaScript复制到剪贴板?.
然而...
我只是检查了stackoverflow代码块,它们用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/突出显示语法.
这是一个很好的设置,但我现在正在与textareas.
除了输入之外的其他内容不会使用文本区域在语义上不正确吗?对我来说似乎是一个奇怪的解决方案.
不像在"pre"标签中添加一堆格式样式那样语义上不正确,因为"pre"表示所包含的文本是预先格式化的,因此不需要额外的格式,而是按原样使用;)我建议不要给"语义"优先于"功能".
7> vovahost..:
我结合了@richelectron和@ user1433454的答案.
它工作得很好,并保留文本格式.
8> Bobby Jack..:
你可以:
pre { white-space: normal; }
维护等宽字体但添加自动换行,或者:
pre { overflow: auto; }
这将允许固定大小与水平滚动长行.
9> Eduardo Camp..:
尝试使用
.
或者更好地抛出CSS.
这个解决方案的问题是它也会解散换行符......例如,任何文本与段落的分离都将丢失.