博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表情包 - vue/微信小程序/js/数据驱动
阅读量:6540 次
发布时间:2019-06-24

本文共 1197 字,大约阅读时间需要 3 分钟。

一、先放效果图

二、介绍

实现起来比较简单,是用了微信的表情包地址,更改对应的表情dom节点。然后用v-html渲染

三、实现/原理

  • 先把表情包展示出来

    ,文字对应的下标就是微信表情包的表情名称。 比如,第i个表情下标是index,对应微信表情包的地址为:

    const img = ``复制代码

    这样就很简单了,直接初始化表情包

    注意:我这里把对应的文字更改为以#号开头,;号结尾。一定规则的字符串,方便拿到数据进行解析。为什么不直接储存标签呢,是因为还要在输入框展示啊!!如果能做成输入框也展示正常表情那就更好了,欢迎大佬留言!!!

    // 初始化表情 initEmotion(){   const list = this.emotionList;   let emotionArr = [];   list.map((item, index) => {     emotionArr.push({       name: `#${item};`,       url: ``     });   });   this.emotionArr = emotionArr; },复制代码

    拿到带有表情地址的数组,知道怎么渲染了吧

    复制代码

    然后点击的时候直接插入到输入框

    handEmotion(item) {  this.sendInfo += item.name;}复制代码
  • 插入到输入框光标位置

    ```  //.....    //这个问题问的好!  ```复制代码
  • 获取并展示表情包的消息内容

    请求数据的拿到,应该是我们之前为表情做了特殊修改的字符串,比如"hello world#你好;"里面的#你好;就应该转成表情地址,然后再渲染出来。

    正则表达式/\#[\u4E00-\u9FA5]{1,3}\;/gi: 意思就是,以#开头;结尾的字符,中间可有1-3个字符

    // 将匹配结果替换表情图片        item.Info = item.Info.replace(          /\#[\u4E00-\u9FA5]{1,3}\;/gi,          words => {            let word = words.replace(/\#|\;/gi, "");            let index = this.emotionList.indexOf(word);            if(index!== -1){               return ``;            }else{              return words            }           }        );复制代码

转载于:https://juejin.im/post/5d01bb93f265da1b971a6ee1

你可能感兴趣的文章
java泛型中<?>和<T>区别
查看>>
这里是指推送通知跟NSNotification有区别:
查看>>
用户ID的代码生成
查看>>
win7经常出现“关闭xxxx前您必须关闭所有会话框”
查看>>
SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)
查看>>
MongoDB 自己定义函数
查看>>
Summary Day30
查看>>
逆向输出回环数组
查看>>
自己动手,实现“你的名字”滤镜
查看>>
高清摄像头MIPI CSI2接口浅解【转】
查看>>
C# CancellationTokenSource和CancellationToken的实现
查看>>
PCIE BAR空间
查看>>
winform命名规范
查看>>
如何用数学课件制作工具画角平分线
查看>>
VS2015 中统计整个项目的代码行数
查看>>
Anaconda入门使用指南
查看>>
UWP控件与DataBind
查看>>
bash: php: command not found
查看>>
XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix
查看>>
数据恢复软件如何换机使用?
查看>>