详解Vue如何将多个空格被合并显示成一个空格

 更新时间:2024年04月02日 08:29:14   作者:HED  
这篇文章主要为大家详细介绍了在Vue中如何将多个空格被合并显示成一个空格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

现象

最近在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, '&nbsp;'),//页面显示效果:这是&nbsp;&nbsp;&nbsp;空格
   }
 }
</script>

在Vue2中,如果使用插值表达,则需使用\xa0来表示空格,如果直接使用&nbsp;来表示空格,它不会显示为空格,而是会被当成字符实体解析。

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, '&nbsp;'),//页面显示效果:这是   空格
   }
 }
</script>

在Vue2中,如果使用v-html指令方式,则用\xa0&nbsp;来表示空格都可以正常显示。

3.v-html指令/插值表达式 + CSS

如果不对空格进行转义,在v-html指令/插值表达式模式下直接给元素添加如下样式也能实现想要的效果。

<template>
  <span style="white-space:pre;" v-html="'这是   空格'"></span> 
</template>

其中,white-space:pre;是保留所有空白或换行符(回车键),可以实现原样输出。

番外

在Vue2中,如果在模板标签中直接使用&nbsp;作为空格,则在 compile 的过程中会被转换成一个空格。而直接使用\xa0来表示空格,则会被当成字符实体解析。

<template>
  <!-- 页面显示效果:这是 空格 -->
  <span>这是&nbsp;&nbsp;&nbsp;空格'</span>
  <!-- 页面显示效果:这是\xa0\xa0\xa0 空格 -->
  <span>这是\xa0\xa0\xa0空格'</span>
</template>

HTML提供的几种空格实体

HTML提供的几种空格实体(space entity),它们拥有不同的宽度。非断行空格( )是常规空格的宽度,可运行于所有主流浏览器。其他几种空格(&ensp; &emsp; &thinsp; &zwnj;&zwj;)在不同浏览器中宽度各异。

&nbsp;

它叫不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格,大多数的人可能只接触了 ,它是按下space键产生的空格。在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加,该空格占据宽度受字体影响明显而强烈。

&ensp;

它叫半角空格,全称是En Space,en是字体排印学的计量单位,为em宽度的一半。根据定义,它等同于字体度的一半(如16px字体中就是8px)。名义上是小写字母n的宽度。此空格传承空格家族一贯的特性:透明的,此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响。

&emsp;

它叫角空格,全称是Em Space,em是字体排印学的计量单位,相当于当前指定的点数。例如,1 em在16px的字体中就是16px。此空格也传承空格家族一贯的特性:透明的,此空格也有个相当稳健的特性,就是其占据的宽度正好是1个中文宽度,而且基本上不受字体影响。

&thinsp;

它叫窄空格,全称是Thin Space。我们不妨称之为瘦弱空格,就是该空格长得比较瘦弱,身体单薄,占据的宽度比较小。它是em之六分之一宽。

&zwnj;

它叫零宽不连字,全称是Zero Width Non Joiner,简称ZWNJ,是一个不打印字符,放在电子文本的两个字符之间,抑制本来会发生的连字,而是以这两个字符原本的字形来绘制。Unicode中的零宽不连字字符映射为U+200C。

&zwj;

它叫零宽连字,全称是Zero Width Joiner,简称ZWJ,是一个不打印字符,放在某些需要复杂排版语言(如阿拉伯语、印地语)的两个字符之间,使得这两个本不会发生连字的字符产生了连字效果。零宽连字符的Unicode码位是U+200D。

此外,浏览器还会把以下字符当作空白进行解析:空格(&#x0020;)、制表位(&#x0009;)、换行(&#x000A;)和回车(&#x000D;)还有(&#12288;)等等。

Js中的空格

1.String.fromCharCode(32)

2.\xa0:属于latin(ISO/IEC_8859-1,拉丁字母)中的扩展字符集字符,代表空白符nbsp(non-breaking space)。

3.\u0020 :属于Unicode字符,用法和\xa0一样

4.\x20 :标准键盘码值表-十六进制。

5.%20 :对URI 进行解码的样式,需要用到decodeURIComponent。如decodeURIComponent('%20')后会显示1个空格。

6.\t: 这种相当于按了tab键,一个相当于4个空格。

到此这篇关于详解Vue如何将多个空格被合并显示成一个空格的文章就介绍到这了,更多相关Vue合并多个空格内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Vue-scoped(局部)样式使用方法及实例代码

    Vue-scoped(局部)样式使用方法及实例代码

    这篇文章主要介绍了Vue-scoped(局部)样式使用方法及实例代码,文中示例代码介绍了的非常详细感兴趣的同学可以参考阅读一下
    2023-05-05
  • Vue.js实现无限加载与分页功能开发

    Vue.js实现无限加载与分页功能开发

    这篇文章主要为大家详细介绍了Vue.js实现无限加载与分页功能开发实践,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • mint-ui在vue中的使用示例

    mint-ui在vue中的使用示例

    Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,这篇文章主要介绍了mint-ui在vue中的使用示例,这里整理了详细的代码,有需要的小伙伴可以参考下
    2018-04-04
  • 修改el-form-item中的label里面的字体边距或者大小问题

    修改el-form-item中的label里面的字体边距或者大小问题

    这篇文章主要介绍了修改el-form-item中的label里面的字体边距或者大小问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue 使用计时器实现跑马灯效果的实例代码

    Vue 使用计时器实现跑马灯效果的实例代码

    这篇文章主要介绍了Vue 使用计时器实现跑马灯效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • Vue退出登录时清空缓存的实现

    Vue退出登录时清空缓存的实现

    今天小编就为大家分享一篇Vue退出登录时清空缓存的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 一篇文章带你吃透Vuex3的状态管理

    一篇文章带你吃透Vuex3的状态管理

    Vuex是一个专为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,下面这篇文章主要给大家介绍了关于如何通过一篇文章带你吃透Vuex3的状态管理,需要的朋友可以参考下
    2022-07-07
  • element el-input directive数字进行控制

    element el-input directive数字进行控制

    本文介绍了vue使用directive 进行控制的方法,使用element开发的过程中遇到循环的数据只能输入数字,并且有不要小数点,有需要小数点的,就有一定的参考价值,有兴趣的可以了解一下
    2018-10-10
  • Vue2.0 事件的广播与接收(观察者模式)

    Vue2.0 事件的广播与接收(观察者模式)

    这篇文章主要介绍了Vue2.0 事件的广播与接收(观察者模式),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Vue数据更新视图不更新的几种解决方案小结

    Vue数据更新视图不更新的几种解决方案小结

    这篇文章主要介绍了Vue数据更新视图不更新的几种解决方案小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论

?


http://www.vxiaotou.com