Vue3實(shí)現(xiàn)Emoji表情的四種方案
使用輸入法輸入表情
Textarea中支持接受輸入法輸入的表情,在 macOs 中直接輸入“微笑”,會(huì)直接打印出??的表情,和文字沒(méi)區(qū)別。
但是這種方案不好的點(diǎn)在于只能手輸,沒(méi)辦法達(dá)到選擇的效果。
使用Unicode編碼輸入表情
在 Unicode 編碼中存在對(duì)應(yīng)表情的編碼區(qū)間,位于基本多語(yǔ)言面(Basic Multilingual Plane,BMP),碼點(diǎn)在 U+1F600 到 U+1F6FF。
因?yàn)槟壳笆褂玫氖?textarea 作為輸入框,所以 Unicode 編碼在輸入框顯示出來(lái)是純文本,這就導(dǎo)致用戶很有可能出現(xiàn)誤修改。
另外會(huì)話信息的展示區(qū)域,現(xiàn)在也是直接使用的模板語(yǔ)法,需要在展示區(qū)使用 v-html 才能正常展示表情,否則也是純文本。
但是基于 Unicode 編碼的這種模式非常輕量,并不需要額外的庫(kù)和特殊操作。
使用自定義內(nèi)容進(jìn)行對(duì)應(yīng)
使用自定義內(nèi)容進(jìn)行對(duì)應(yīng),這應(yīng)該是QQ的表情方案(雖然我沒(méi)看過(guò)源碼,純猜測(cè))。
QQ的輸入框在使用 “/” 進(jìn)行輸入的時(shí)候會(huì)彈出相應(yīng)的表情提示,確定以后變成表情。這里面大概率是經(jīng)歷了對(duì)特定編碼的轉(zhuǎn)換。
同理我們也可以用這種方案進(jìn)行轉(zhuǎn)換,可以使用特定的符號(hào)在系統(tǒng)中進(jìn)行解析,生成表情。
比如系統(tǒng)中寫死 “[wx]” 代表是的 ?? ,當(dāng)輸入框通過(guò) input 事件監(jiān)聽到存在 “[wx]” 的時(shí)候,代碼將其自動(dòng)轉(zhuǎn)換為 ??。
插個(gè)眼,后面把 Unicode 編碼通過(guò)這種方式實(shí)現(xiàn)一下。
使用 emoji-mart-vue 插件
使用插件是性價(jià)比最高的方案,這個(gè)插件相當(dāng)于直接把輸入的emoji集成了,無(wú)需改造原本的代碼,插入的emoji表情輸入法輸入的沒(méi)有區(qū)別。
唯一可能存在的瑕疵可能是沒(méi)辦法自定義。
安裝
npm install emoji-mart-vue-fast
使用
<template> <Picker :data="emojiIndex" :emojiSize="18" :showPreview="false" :infiniteScroll="false" :i18n="emojiI18n" set="apple" @select="handlerEmoji" /> </template> <script> import data from 'emoji-mart-vue-fast/data/all.json'; import 'emoji-mart-vue-fast/css/emoji-mart.css' import { Picker, EmojiIndex } from 'emoji-mart-vue-fast/src'; export default { components: { Picker, EmojiIndex }, data() { return { editorValue: "", emojiOpen: false, emojiI18n: { search: '搜索', notfound: 'No Emoji Found', categories: { search: '搜索結(jié)果', recent: '經(jīng)常使用', smileys: '表情與情感', people: '人物與身體', nature: '動(dòng)物與自然', foods: '食物與飲料', activity: '活動(dòng)', places: '旅行與地理', objects: '物品', symbols: '符號(hào)標(biāo)志', flags: '旗幟', custom: 'Custom', joy: '哭笑' } }, } }, computed: { emojiIndex() { return new EmojiIndex(data); } }, methods: { // 選中emoji方法 handlerEmoji(event) { console.log(event); }, } } </script>
結(jié)論
想要自定義可以嘗試第三種方案,現(xiàn)成的直接第四種方案。
到此這篇關(guān)于Vue3實(shí)現(xiàn)Emoji表情的四種方案的文章就介紹到這了,更多相關(guān)Vue3實(shí)現(xiàn)Emoji表情內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VScode中配置ESlint+Prettier詳細(xì)步驟(附圖文介紹)
這篇文章主要介紹了VScode中配置ESlint+Prettier詳細(xì)步驟,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12詳解vue數(shù)組遍歷方法forEach和map的原理解析和實(shí)際應(yīng)用
這篇文章主要介紹了詳解vue數(shù)組遍歷方法forEach和map的原理解析和實(shí)際應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Vue組件實(shí)現(xiàn)卡片動(dòng)畫倒計(jì)時(shí)示例詳解
這篇文章主要介紹了Vue組件實(shí)現(xiàn)卡片動(dòng)畫倒計(jì)時(shí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Vue實(shí)現(xiàn)Echarts圖表寬高自適應(yīng)的實(shí)踐
本文主要介紹了Vue實(shí)現(xiàn)Echarts圖表寬高自適應(yīng)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法
這篇文章主要介紹了Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10vue如何使用element ui表格el-table-column在里面做判斷
這篇文章主要介紹了vue如何使用element ui表格el-table-column在里面做判斷問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08