赞
踩
项目源码请移步:bbs
效果
实现思路
人物、动物、小黄人不同表情之间的切换实际就是组件的切换
emoji表情本身就是一种字符 如需其他emoji表情可参考 EmojiAll中文官方网站
需要注意的就是数据库的存储格式需要支持emoji表情,我项目中使用的mysql(utf8mb4)
我的方案是gif图或png(或其他格式)图,在输入框内可以看到点击小黄人实际录入的是“[小黄人-微笑]”一段文案,实际上数据库内存的也是“[小黄人-微笑]”。但我们更关心的是页面如何反显这张图呢?
答案是正则
export default { data() { return { minions:{ '[小黄人-微笑]':'f0/xhrnew_weixiao_org.png', '[小黄人-剪刀手]':'63/xhrnew_jiandaoshou_org.png', '[小黄人-不屑]':'b2/xhrnew_buxie_org.png', '[小黄人-高兴]':'41/xhrnew_gaoxing_org.png', '[小黄人-惊讶]':'fd/xhrnew_jingya_thumb.png', '[小黄人-委屈]':'79/xhrnew_weiqu_org.png', '[小黄人-坏笑]':'be/xhrnew_huaixiao_thumb.png', '[小黄人-白眼]':'e2/xhrnew_baiyan_org.png', '[小黄人-无奈]':'15/xhrnew_wunai_org.png', '[小黄人-得意]':'c8/xhrnew_deyi_org.png' } } }, filters:{ formatMinions:function(content, minions){ var res = "" if(content){ res = content.replace(/\[(.*?)\]/gi,(item)=>{ if(item.indexOf('小黄人-') != -1){ let suffix = minions[item] return `<image class="emoji-sticker" src="https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/${suffix}" mode=""></image>` } return "" }) } return res } } }
<view class="pub-v3">
<text class="articled-t3-a4" v-html="$options.filters.formatMinions(articleContent,minions)"></text>
</view>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。