详解Vue如何将多个空格被合并显示成一个空格 |
现象最近在Vue2项目开发中遇到个奇怪的现象,用户往数据库存了中间有四个空格的数据,数据库存储正常,接口返回的数据也是带四个空格没问题,但页面展示只有一个空格 。 原因在HTML/Vue中,多个连续的空格会合并为一个空格 。 解决方案1.插值表达式 + 正则<template> <span>{{ space1 }}</span> <span>{{ space2} }</span> </template> <script> export default { data() { //正确写法 space1: '这是 空格'.replace(/s/g, 'xa0'),//页面显示效果:这是 空格 //错误写法 space2: '这是 空格'.replace(/s/g, ' '),//页面显示效果:这是 空格 } } </script> 在Vue2中,如果使用插值表达,则需使用 2.v-html指令 + 正则<template> <span v-html="space1">{{ space1 }}</span> <span v-html="space2">{{ space2} }</span> </template> <script> export default { data() { //正确写法1 space1: '这是 空格'.replace(/s/g, 'xa0'),//页面显示效果:这是 空格 //正确写法2 space2: '这是 空格'.replace(/s/g, ' '),//页面显示效果:这是 空格 } } </script> 在Vue2中,如果使用 3.v-html指令/插值表达式 + CSS如果不对空格进行转义,在 <template> <span style="white-space:pre;" v-html="'这是 空格'"></span> </template> 其中, 番外在Vue2中,如果在模板标签中直接使用 作为空格,则在 compile 的过程中会被转换成一个空格 。而直接使用xa0来表示空格,则会被当成字符实体解析 。 <template> <!-- 页面显示效果:这是 空格 --> <span>这是 空格'</span> <!-- 页面显示效果:这是xa0xa0xa0 空格 --> <span>这是xa0xa0xa0空格'</span> </template> HTML提供的几种空格实体 HTML提供的几种空格实体(space entity),它们拥有不同的宽度 。非断行空格( )是常规空格的宽度,可运行于所有主流浏览器 。其他几种空格(
它叫不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格,大多数的人可能只接触了 ,它是按下space键产生的空格 。在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个) 。要使用html实体表示才可累加,该空格占据宽度受字体影响明显而强烈 。
它叫半角空格,全称是En Space,en是字体排印学的计量单位,为em宽度的一半 。根据定义,它等同于字体度的一半(如16px字体中就是8px) 。名义上是小写字母n的宽度 。此空格传承空格家族一贯的特性:透明的,此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响 。
它叫角空格,全称是Em Space,em是字体排印学的计量单位,相当于当前指定的点数 。例如,1 em在16px的字体中就是16px 。此空格也传承空格家族一贯的特性:透明的,此空格也有个相当稳健的特性,就是其占据的宽度正好是1个中文宽度,而且基本上不受字体影响 。
它叫窄空格,全称是Thin Space 。我们不妨称之为瘦弱空格,就是该空格长得比较瘦弱,身体单薄,占据的宽度比较小 。它是em之六分之一宽 。
它叫零宽不连字,全称是Zero Width Non Joiner,简称ZWNJ,是一个不打印字符,放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制 。Unicode中的零宽不连字字符映射为U+200C 。
它叫零宽连字,全称是Zero Width Joiner,简称ZWJ,是一个不打印字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果 。零宽连字符的Unicode码位是U+200D 。 此外,浏览器还会把以下字符当作空白进行解析:空格( Js中的空格 1. 2. 3. 4. 5. 6. 到此这篇关于详解Vue如何将多个空格被合并显示成一个空格的文章就介绍到这了,更多相关Vue合并多个空格内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |