vue文本识别 “ \n ” 的换行问题
在 vue 项目,有时请求返回的数据中会有含有 \n 的字符串,如果直接渲染的话无法实现换行。一、通过 css属性 实现:设置 white-space: pre-wrap;二、使用v-html实现:首先,将字符串里的 \n 替换为 ,然后用 v-html 指令渲染字符串为 innerHTML 。三、标签:pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。
·
在 vue 项目,有时请求返回的数据 中会有含有 \n 的字符串,如果直接渲染的话无法实现换行。
一、通过 css属性 实现
设置 white-space: pre-wrap; 代码如下:
<div style="white-space: pre-wrap;">{{含有\n的字符串}}</div>
扩展:
white-space属性值:
值 | 描述 |
---|---|
normal | 默认。空白会被浏览器忽略。 |
pre | 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。 |
nowrap | 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。 |
pre-wrap | 保留空白符序列,但是正常地进行换行。 |
pre-line | 合并空白符序列,但是保留换行符。 |
inherit | 规定应该从父元素继承 white-space 属性的值。 |
二、使用v-html实现
首先,将字符串里的 \n 替换为 <br>,然后用 v-html 指令渲染字符串为 innerHTML 。 代码如下:
// JS部分
this.text = res.data.replace(/\n/g,'<br>')
// HTML部分
<div v-html="text"></div>
三、<pre>标签
pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。代码如下:
<pre>{{含有\n的字符串}}</pre>
注意:在选择<pre>标签时,如果文字太长的行可能会撑开固定宽度的容器或者超出容器范围。解决方法:
pre {
//方法一:保留空白符序列,但是正常地进行换行。
white-space: pre-wrap;
//方法二:添加横向滚动条
overflow-x: auto;
}
最后,虽然三种方法都可以实现,但本人比较推荐前两种。
更多推荐
已为社区贡献7条内容
所有评论(0)