uni-app(H5)论坛 | 社区 表情选择 UI组件

项目源码请移步:bbs

效果



实现思路

  • 表情切换

人物、动物、小黄人不同表情之间的切换实际就是组件的切换

  • emoji表情

emoji表情本身就是一种字符 如需其他emoji表情可参考EmojiAll中文官方网站

需要注意的就是数据库的存储格式需要支持emoji表情,我项目中使用的mysql(utf8mb4)

  • 小黄人表情

我的方案是gif图或png(或其他格式)图,在输入框内可以看到点击小黄人实际录入的是"[小黄人-微笑]"一段文案,实际上数据库内存的也是"[小黄人-微笑]"。但我们更关心的是页面如何反显这张图呢?

答案是正则

javascript 复制代码
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
			}
		}
	}
html 复制代码
<view class="pub-v3">
			<text class="articled-t3-a4" v-html="$options.filters.formatMinions(articleContent,minions)"></text>
		</view>
相关推荐
灰天7681 小时前
摄影交流平台项目Uniapp+Springboot已完成
uni-app
灰天7681 小时前
快递代取项目Uniapp+若依后端管理
uni-app
约定Da于配置7 小时前
uniapp封装websocket
前端·javascript·vue.js·websocket·网络协议·学习·uni-app
大叔_爱编程7 小时前
wx030基于springboot+vue+uniapp的养老院系统小程序
vue.js·spring boot·小程序·uni-app·毕业设计·源码·课程设计
毛毛三由11 小时前
uniapp的插件开发发布指南
uni-app
努力搬砖的程序媛儿13 小时前
uniapp悬浮可拖拽按钮
java·前端·uni-app
baby_hua1 天前
AI生成文档——Uni-App CSS 样式开发指南
css·uni-app·notepad++
寰宇软件1 天前
PHP教育系统小程序
小程序·uni-app·vue·php
寰宇软件2 天前
PHP装修行业小程序
小程序·uni-app·vue·php
九情丶2 天前
UniApp + UniCloud 实现微信小程序静默登录
微信小程序·uni-app·notepad++