vue文本识别 “ \n ” 的换行问题

2023-03-06  本文已影响0人  蓦然回味

在 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;

}

上一篇 下一篇

猜你喜欢

热点阅读