vue项目添加emoji表情
安装emoji-mart-vue插件
插件地址: https://github.com/jm-david/emoji-mart-vue
需要注意的细节:
- 获取光标位置
- 插入完成后的光标位置,vue的v-model渲染会有一个过程,需要加一个延时再去计算移动光标位置
示例图:
完整代码
<template><div><textarea id="textarea" v-model="content" /><div class="face"><Picker @select="showEmoji" :i18n="I18N" /></div></div>
</template><script>
import { Picker } from "emoji-mart-vue";const I18N = {search: '搜索',notfound: 'No Emoji Found',categories: {search: '搜索结果',recent: '经常使用',smileys: '表情与情感',people: '人物与身体',nature: '动物与自然',foods: '食物与饮料',activity: '活动',places: '旅行与地理',objects: '物品',symbols: '符号标志',flags: '旗帜',custom: 'Custom',},
}export default {name: 'App',components: {Picker},data() {return {content: '',I18N: I18N}},methods: {// 选择表情showEmoji(emoji) {const str = emoji.nativevar oText = document.getElementById('textarea')var index = this.getCursortPosition(oText)this.$nextTick( () => {this.insert(oText,str,index)})},// 插入表情insert (oText,varstr,index) {var text = this.contentlet startStr = text.substring(0, index)let endStr = text.substring(index, text.length)this.content = startStr + varstr + endStrsetTimeout(() => {this.setCaretPosition(oText, index+2)}, 10);},// 获取光标位置getCursortPosition (obj) {var cursorIndex = 0if (document.selection) {obj.focus()var range = document.selection.createRange()range.moveStart('character', -obj.value.length)cursorIndex = range.text.length} else if (obj.selectionStart || obj.selectionStart == 0) {cursorIndex = obj.selectionStart}return cursorIndex},// 设置光标位置setCaretPosition(ctrl, pos){if(ctrl.setSelectionRange){ctrl.focus();ctrl.setSelectionRange(pos,pos);}else if (ctrl.createTextRange) {var range = ctrl.createTextRange();range.collapse(true);range.moveEnd('character', pos);range.moveStart('character', pos);range.select();}},}
}
</script><style>
textarea{width: 100%;height: 200px;padding: 10px;line-height: 24px;
}
</style>
vue项目添加emoji表情相关推荐
- 2021-07-14在vue中引入emoji表情
在vue中添加emoji表情 过程 过程 在已经创建的表情button中应用ant design组件: 网址.添加气泡卡片组件 在js中引入依赖 下面展示一些 内联代码片. // 引入安装包和样式 i ...
- markdown中添加Emoji表情让文章更有趣味
markdown表情 在文章中添加Emoji表情,可以添加文章的趣味性,Emoji使用规则是双::中间加单词 查看全文 http://www.taodudu.cc/news/show-4737612. ...
- 为 VUE 项目添加 PWA 解决发布后刷新报错问题
为 VUE 项目添加 PWA 解决发布后刷新报错问题 参考文章: (1)为 VUE 项目添加 PWA 解决发布后刷新报错问题 (2)https://www.cnblogs.com/morang/p/9 ...
- 微信公众号自定义菜单添加emoji表情图标
微信公众号自定义菜单添加emoji表情图标 第一步:打开微信公众平台接口调试工具,点击前往接口调试工具: 第二步:把这段代码 {"button":[{"sub_but ...
- Vue+Element-ui实现emoji表情在光标处添加
前言 开发中遇到产品提的一个小需求,在每个el-form-item表单项后面添加添加一个可以在文本任意位置输入emoji表情的功能,效果图如下: 解决方案 1.采用element中的 el-popov ...
- vue项目添加百度统计
第一步:准备工作 1.使用百度账号登录百度统计平台(没有百度账号先注册一个) https://tongji.baidu.com/web/welcome/login 2.登录后进入管理 >账户管理 ...
- Markdown添加emoji表情
编写markdown文档久了,可能会开始考虑,如何才能让markdown文档不再单调? 使用简单的冒号+单词的方式,就能快速添加千款emoji表情,让文档充满活力. 超全的emoji列表参见这个
- 后台管理系统 添加emoji表情
交代下编写环境 : vue + element 使用emoji 首先要注意的是emoji的格式,emoji的编码格式是Unicode格式,数据库储存的格式是utf-8,如果想要兼容Unicode 则需 ...
- SpringBoot项目处理emoji表情到mysql
Mysql设置字符集编码,程序设置连接客户端编码来解决emoji表情 emoji表情现在是日常生活中必不可少的存在了,首先我们先了解一下为什么emoji表情不能像普通的字符处理?emoji 其实是 ...
- vue项目 添加全局水印或某个指定页面水印 源码
vue项目的页面添加水印,效果如图 index.vue import watermark from "./watermark"; mounted() {watermark.set( ...
最新文章
- 真香!Vision Transformer 快速实现 Mnist 识别
- android canvas bitmap matrix,Canvas API详解(Part 3)Matrix和drawBitmapMash
- 浏览器的内核及版本的判断
- 如何去掉域名中的www?
- jq简单封装replaceAll
- 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.4节文件I/O
- oracle起定时任务,每隔1秒执行一次
- 如何在不接收返回值的情况下获取返回值?
- Eclipse中快速使代码对齐?1张图搞定!
- ARINC485和RS485的区别
- 小刘的每日知识点——10.22
- 共探机遇 2018中国产业互联网化纤创新者大会华丽启幕...
- 神仙打架!2020年清华大学本科生特奖答辩入围名单公布!简历爆棚!
- 企业邮箱哪个最好用?企业内部邮箱多少钱? 企业邮箱安全怎么选择?
- 用Obspy读取segy的文件头并保存到csv数据库
- 如何给原图添加文字水印和图片水印
- HTML+CSS修改li前小圆点的样式or颜色
- 我的世界服务器修改spawn,编辑“命令/spawnpoint” - Minecraft Wiki,最详细的官方我的世界百科...
- Nature:Rob Knight团队发现血液和组织微生物组可诊断癌症
- 谷歌浏览器打开调试模式后刷新页面,页面一直加载问题