Vue 表情包输入组件的实现代码

摘要:
--/#[u4E00-u9FA5]{1,3};/Gi与#XXX匹配;字段--˃

Emotion

一个用于vue的表情输入组件
https://gitee.com/jiangliyue/vue_expression_input_module

index是使用示例,emotion是组件代码(这里用的是微信表情包的地址,大家可根据需要修改)

下载安装启动项目查看效果

npm install

npm run dev 

Vue 表情包输入组件的实现代码第1张

Emotion文件夹下Emotion文件说明

实现原理是根据字段对在线表情包图片进行匹配替换
代码中 img 标签的地址即为表情图片地址,可自己根据需求替换
 mounted () {
 const name = this.$el.innerHTML
 const list = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极']
 let index = list.indexOf(name)
 let imgHTML = `<img src="https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/${index}.gif">`
 this.$nextTick(() => {
  this.$el.innerHTML = imgHTML
 })
 },

Emotion文件夹下index文件说明

通过循环列表生成表情包选择框

 <div   v-for="(line, i) in list" :key="i" >
  <emotion   v-for="(item, i) in line" :key="i" @click.native="clickHandler(item)" >{{item}}</emotion>
  </div>

最后需要注意的是表情包评论后保存到后台的是相关字符串,展示时需要还原成图片,具体方法可参考index文件,我这里用了正则匹配转化,还是比较方便的

 <div class="text-place">
  <!-- /#[u4E00-u9FA5]{1,3};/gi 匹配出含 #XXX; 的字段 -->
  <p v-html="content.replace(/#[u4E00-u9FA5]{1,3};/gi, emotion)"></p>
 </div>

免责声明:文章转载自《Vue 表情包输入组件的实现代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql中处理1970年前的日期(unixtime为负数的情况)负数时间戳格式化移动端前端UI库—Frozen UI、WeUI、SUI Mobile下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue:app.vue中添加监听beforeunload事件,即当浏览器窗口关闭或刷新时删除vuex中的数据

当打开页面时,添加事件监听,即监听beforeunload事件,beforeunload事件在关闭页面时触发。即当关闭页面时,手动删除localStorage中的数据。 app.vue中的代码如下: <template> <div id="app"> <router-view /> </div>...

vue 多个audio播放 一个audio播放其他audio禁止播放

页面:          <div class="right"> <audio :ref="'audio' + index" :src="item.audioUrl" @ended="haveEnded"/> <div :class="{ active: playIndex == index}"...

《Vue项目的创建以及初始化(两种方法)》

  Vue项目创建初始化两种方法,一是命令创建,二是在它的ui图形界面去创建(我一般用ui,主要懒得打那么多命令)~   创建的时候一定要确保node是否安装,npm一般都会自带的,检查它们版本的命令就是:node -V 以及 npm -V ,如果要更新npm的版本就可以输入npm install -g npm   先说命令创建初始化:     首先安装v...

vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)

vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)   [注]:  popstate 事件   a.当活动历史记录条目更改时,将触发popstate事件。   b.如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,          popstate...

VUE学习笔记--基础标签

本笔记仅用作学习vue过程中的知识记录,亦用作知识温习查询的纲要。 a、一些称呼 函数-方法:一般在上下文直接定义的function叫做函数,而在对象中定义的叫方法。即方法是附属于某个实例的,而函数是一个声明。通常,这个并不严格定义区分,更多是习惯约定。 1、options的主要属性 const obj = { counter: 0, messag...

vue元素显示隐藏 vif 和 vshow 指令

v-if 和 v-show在vue中,v-if 和 v-show 会根据接收 true/false 信息使得页面上元素达到显示或隐藏的效果。 语法: <标签 v-if="true/false"></标签> <标签 v-show="true/false"></标签> <!--true:显示 false:隐...