在<pre>标签中获取换行符

pei*_*rix 44 html

我正在创建基于用户输入到textarea的注释字段.但是当我使用<pre>标签时,我无法告诉它在评论视图中正确包装.

如果有更好的方法,我不会坚持使用<pre>标签.我选择使用它的唯一原因是保留用户添加的换行符和空格.

我注意到<pre>有一个名为"width"的属性,但W3注意到它已被弃用,并且它只会在如此多的字符之后中断,这也不理想.(它根本不适用于IE.)

有什么建议?

bob*_*nce 71

通常的方法是将输入中的单个换行符转换为"<br />".(双换行通常会引入一个新的"<p>"元素.)但这并不包括多个空格运行; 如果你需要保留它们,你可以用空格和不间断的空格('','\ xA0'或' '作为字符引用)替换每个两空格序列.

有一种CSS方式可以保留文字换行符和空格,但是当行长度太短时仍然会换行:

white-space: pre-wrap;
Run Code Online (Sandbox Code Playgroud)

但是,在其原始名称下不支持跨浏览器的CSS 2.1和CSS 3属性值.Webkit(Safari,Chrome)选择它; 要让它在其他流行的浏览器下工作,你必须添加:

white-space: -moz-pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
Run Code Online (Sandbox Code Playgroud)

'自动换行'适用于IE,它总是有自己的做事方式.

  • 哦,成为一名在反/ IE6工作/挪威的网络开发人员.对于较少的头痛来说,这一定是好事. (3认同)

小智 10

最佳跨浏览器方式(Chrome,Internet Explorer,Firefox).它对我有用,可以获得换行符并显示确切的文字:

CSS:

xmp{ white-space:pre-wrap; word-wrap:break-word; }
Run Code Online (Sandbox Code Playgroud)

HTML:

<xmp> your text or code </xmp>
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用XMP标签**.有关详细信息,请参阅/sf/ask/318181/.根据https://developer.mozilla.org/en-US/docs/Web/HTML/Element/xmp,"虽然它可能仍然适用于某些浏览器,但不建议使用它,因为它可以随时删除.请尝试避免使用它." (5认同)

Gum*_*mbo 6

您可以在SO上显示与pre此类overflow:auto似的元素:

<pre style="overflow:auto">Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua.Utenimadminimveniam,quisnostrudexercitationullamcolaborisnisiutaliquipexeacommodoconsequat.Duisauteiruredolorinreprehenderitinvoluptatevelitessecillumdoloreeufugiatnullapariatur.Excepteursintoccaecatcupidatatnonproident,suntinculpaquiofficiadeseruntmollitanimidestlaborum.</pre>
Run Code Online (Sandbox Code Playgroud)

但该pre元素仅用于预格式化的文本,如源代码或纯文本文档.因此,您最好添加HTML换行符(br元素)甚至段落(p元素).

  • 您可能仍然希望有溢出,因为在某些情况下,有人输入了令人讨厌的长单词,该单词不会很好地包装并且会弄乱某些类型的布局。 (2认同)