hello,I’m Shendi
最近弄了个表情输入框,在这里记录分享一下
文章目录
- 效果演示
- 实现思路
- 全部源码地址
效果演示
小程序表情列表输入演示
源码链接放到了最底部
实现思路
微信小程序默认支持emoji表情
表情与文字类似,不同的是一个表情占用四个字节,于是可以直接复制到代码中
因为一个表情为四个字节,在后端存储时,表的列字段编码需设置为utf8mb4
例如
CREATE TABLE a(name VARCHAR(64) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
);
这里直接上js代码
// index.js
// 获取应用实例
const app = getApp()Page({data: {text : "",textIndex : 0,emojiView : false,emojiList : {// 表情(基础)类basic : ["😀","😁","😂","🤣","😃","😄","😅","😆","😉","😊","😋","😎","😍","😘","😗","😙","😚","☺️","🙂","🤗","🤩","🤔","🤨","😐","😑","😶","🙄","😏","😣","😥","😮","🤐","😯","😪","😫","😴","😌","😛","😜","😝","🤤","😒","😓","😔","😕","🙃","🤑","😲","☹️","🙁","😖","😞","😟","😤","😢","😭","😦","😧","😨","😩","🤯","😬","😰","😱","😳","🤪","😵","😡","😠","🤬","😷","🤒","🤕","🤢","🤮","🤧","😇","🤠","🤡","🤥","🤫","🤭","🧐","🤓","😈","👿","👹","👺","💀","👻","👽","🤖","💩","😺","😸","😹","😻","😼","😽","🙀","😿","😾"],// 手势类gesture : ["🤲","👐","🙌","👏","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌️","🤟","🤘","👌","👈","👉","👆","👇","☝️","✋","🤚","🖐","🖖","👋","🤙","💪","🖕","✍️","🙏"],// 人物people : ["👶","👧","🧒","👦","👩","🧑","👨","👵","🧓","👴","👲","👳♀️","👳♂️","🧕","🧔","👱♂️","👱♀️","👮♀️","👮♂️","👷♀️","👷♂️","💂♀️","💂♂️","🕵️♀️","🕵️♂️","👩⚕️","👨⚕️","👩🌾","👨🌾","👩🍳","👨🍳","👩🎓","👨🎓","👩🎤","👨🎤","👩🏫","👨🏫","👩🏭","👨🏭","👩💻","👨💻","👩💼","👨💼","👩🔧","👨🔧","👩🔬","👨🔬","👩🎨","👨🎨","👩🚒","👨🚒","👩✈️","👨✈️","👩🚀","👨🚀","👩⚖️","👨⚖️","👰","🤵","👸","🤴","🤶","🎅","🧙♀️","🧙♂️","🧝♀️","🧝♂️","🧛♀️","🧛♂️","🧟♀️","🧟♂️","🧞♀️","🧞♂️","🧜♀️","🧜♂️","🧚♀️","🧚♂️","👼","🤰","🤱","🙇♀️","🙇♂️","💁♀️","💁♂️","🙅♀️","🙅♂️","🙆♀️","🙆♂️","🙋♀️","🙋♂️","🤦♀️","🤦♂️","🤷♀️","🤷♂️","🙎♀️","🙎♂️","🙍♀️","🙍♂️","💇♀️","💇♂️","💆♀️","💆♂️","🧖♀️","🧖♂️","💅","🤳","💃","🕺","👯♀️","👯♂️","🕴","🚶♀️","🚶♂️","🏃♀️","🏃♂️","👫","👭","👬","💑","👩❤️👩","👨❤️👨","💏","👩❤️💋👩","👨❤️💋👨","👪","👨👩👧","👨👩👧👦","👨👩👦👦","👨👩👧👧","👩👩👦","👩👩👧","👩👩👧👦","👩👩👦👦","👩👩👧👧","👨👨👦","👨👨👧","👨👨👧👦","👨👨👦👦","👨👨👧👧","👩👦","👩👧","👩👧👦","👩👦👦","👩👧👧","👨👦","👨👧","👨👧👦","👨👦👦","👨👧👧"],// 动植物/自然animals : ["🐶","🐱","🐭","🐹","🐰","🦊","🦝","🐻","🐼","🦘","🦡","🐨","🐯","🦁","🐮","🐷","🐽","🐸","🐵","🙈","🙉","🙊","🐒","🐔","🐧","🐦","🐤","🐣","🐥","🦆","🦢","🦅","🦉","🦚","🦜","🦇","🐺","🐗","🐴","🦄","🐝","🐛","🦋","🐌","🐚","🐞","🐜","🦗","🕷","🕸","🦂","🦟","🦠","🐢","🐍","🦎","🦖","🦕","🐙","🦑","🦐","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🐘","🦏","🦛","🐪","🐫","🦙","🦒","🐃","🐂","🐄","🐎","🐖","🐏","🐑","🐐","🦌","🐕","🐩","🐈","🐓","🦃","🕊","🐇","🐁","🐀","🐿","🦔","🐾","🐉","🐲","🌵","🎄","🌲","🌳","🌴","🌱","🌿","☘️","🍀","🎍","🎋","🍃","🍂","🍁","🍄","🌾","💐","🌷","🌹","🥀","🌺","🌸","🌼","🌻","🌞","🌝","🌛","🌜","🌚","🌕","🌖","🌗","🌘","🌑","🌒","🌓","🌔","🌙","🌎","🌍","🌏","💫","⭐️","🌟","✨","⚡️","☄️","💥","🔥","🌪","🌈","☀️","🌤","⛅️","🌥","☁️","🌦","🌧","⛈","🌩","🌨","❄️","☃️","⛄️","🌬","💨","💧","💦","☔️","☂️","🌊","🌫"],// 十二生肖zodiac : ["🐁","🐂","🐅","🐇","🐉","🐍","🐎","🐐","🐒","🐓","🐕","🐖"],// 水果食物food : ["🍏","🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍈","🍒","🍑","🍍","🥭","🥥","🥝","🍅","🍆","🥑","🥦","🥒","🥬","🌶","🌽","🥕","🥔","🍠","🥐","🍞","🥖","🥨","🥯","🧀","🥚","🍳","🥞","🥓","🥩","🍗","🍖","🌭","🍔","🍟","🍕","🥪","🥙","🌮","🌯","🥗","🥘","🥫","🍝","🍜","🍲","🍛","🍣","🍱","🥟","🍤","🍙","🍚","🍘","🍥","🥮","🥠","🍢","🍡","🍧","🍨","🍦","🥧","🍰","🎂","🍮","🍭","🍬","🍫","🍿","🧂","🍩","🍪","🌰","🥜","🍯","🥛","🍼","☕️","🍵","🥤","🍶","🍺","🍻","🥂","🍷","🥃","🍸","🍹","🍾","🥄","🍴","🍽","🥣","🥡","🥢"],// 运动娱乐fun : ["⚽️","🏀","🏈","⚾️","🥎","🏐","🏉","🎾","🥏","🎱","🏓","🏸","🥅","🏒","🏑","🥍","🏏","⛳️","🏹","🎣","🥊","🥋","🎽","⛸","🥌","🛷","🛹","🎿","⛷","🏂","🏋️♀️","🏋🏻♀️","🏋🏼♀️","🏋🏽♀️","🏋🏾♀️","🏋🏿♀️","🏋️♂️","🏋🏻♂️","🏋🏼♂️","🏋🏽♂️","🏋🏾♂️","🏋🏿♂️","🤼♀️","🤼♂️","🤸♀️","🤸🏻♀️","🤸🏼♀️","🤸🏽♀️","🤸🏾♀️","🤸🏿♀️","🤸♂️","🤸🏻♂️","🤸🏼♂️","🤸🏽♂️","🤸🏾♂️","🤸🏿♂️","⛹️♀️","⛹🏻♀️","⛹🏼♀️","⛹🏽♀️","⛹🏾♀️","⛹🏿♀️","⛹️♂️","⛹🏻♂️","⛹🏼♂️","⛹🏽♂️","⛹🏾♂️","⛹🏿♂️","🤺","🤾♀️","🤾🏻♀️","🤾🏼♀️","🤾🏾♀️","🤾🏾♀️","🤾🏿♀️","🤾♂️","🤾🏻♂️","🤾🏼♂️","🤾🏽♂️","🤾🏾♂️","🤾🏿♂️","🏌️♀️","🏌🏻♀️","🏌🏼♀️","🏌🏽♀️","🏌🏾♀️","🏌🏿♀️","🏌️♂️","🏌🏻♂️","🏌🏼♂️","🏌🏽♂️","🏌🏾♂️","🏌🏿♂️","🏇","🏇🏻","🏇🏼","🏇🏽","🏇🏾","🏇🏿","🧘♀️","🧘🏻♀️","🧘🏼♀️","🧘🏽♀️","🧘🏾♀️","🧘🏿♀️","🧘♂️","🧘🏻♂️","🧘🏼♂️","🧘🏽♂️","🧘🏾♂️","🧘🏿♂️","🏄♀️","🏄🏻♀️","🏄🏼♀️","🏄🏽♀️","🏄🏾♀️","🏄🏿♀️","🏄♂️","🏄🏻♂️","🏄🏼♂️","🏄🏽♂️","🏄🏾♂️","🏄🏿♂️","🏊♀️","🏊🏻♀️","🏊🏼♀️","🏊🏽♀️","🏊🏾♀️","🏊🏿♀️","🏊♂️","🏊🏻♂️","🏊🏼♂️","🏊🏽♂️","🏊🏾♂️","🏊🏿♂️","🤽♀️","🤽🏻♀️","🤽🏼♀️","🤽🏽♀️","🤽🏾♀️","🤽🏿♀️","🤽♂️","🤽🏻♂️","🤽🏼♂️","🤽🏽♂️","🤽🏾♂️","🤽🏿♂️","🚣♀️","🚣🏻♀️","🚣🏼♀️","🚣🏽♀️","🚣🏾♀️","🚣🏿♀️","🚣♂️","🚣🏻♂️","🚣🏼♂️","🚣🏽♂️","🚣🏾♂️","🚣🏿♂️","🧗♀️","🧗🏻♀️","🧗🏼♀️","🧗🏽♀️","🧗🏾♀️","🧗🏿♀️","🧗♂️","🧗🏻♂️","🧗🏼♂️","🧗🏽♂️","🧗🏾♂️","🧗🏿♂️","🚵♀️","🚵🏻♀️","🚵🏼♀️","🚵🏽♀️","🚵🏾♀️","🚵🏿♀️","🚵♂️","🚵🏻♂️","🚵🏼♂️","🚵🏽♂️","🚵🏾♂️","🚵🏿♂️","🚴♀️","🚴🏻♀️","🚴🏼♀️","🚴🏽♀️","🚴🏾♀️","🚴🏿♀️","🚴♂️","🚴🏻♂️","🚴🏼♂️","🚴🏽♂️","🚴🏾♂️","🚴🏿♂️","🏆","🥇","🥈","🥉","🏅","🎖","🏵","🎗","🎫","🎟","🎪","🤹♀️","🤹🏻♀️","🤹🏼♀️","🤹🏽♀️","🤹🏾♀️","🤹🏿♀️","🤹♂️","🤹🏻♂️","🤹🏼♂️","🤹🏽♂️","🤹🏾♂️","🤹🏿♂️","🎭","🎨","🎬","🎤","🎧","🎼","🎹","🥁","🎷","🎺","🎸","🎻","🎲","🧩","♟","🎯","🎳","🎮","🎰"],// 交通旅行traffic : ["🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐","🚚","🚛","🚜","🛴","🚲","🛵","🏍","🚨","🚔","🚍","🚘","🚖","🚡","🚠","🚟","🚃","🚋","🚞","🚝","🚄","🚅","🚈","🚂","🚆","🚇","🚊","🚉","✈️","🛫","🛬","🛩","💺","🛰","🚀","🛸","🚁","🛶","⛵️","🚤","🛥","🛳","⛴","🚢","⚓️","⛽️","🚧","🚦","🚥","🚏","🗺","🗿","🗽","🗼","🏰","🏯","🏟","🎡","🎢","🎠","⛲️","⛱","🏖","🏝","🏜","🌋","⛰","🏔","🗻","🏕","⛺️","🏠","🏡","🏘","🏚","🏗","🏭","🏢","🏬","🏣","🏤","🏥","🏦","🏨","🏪","🏫","🏩","💒","🏛","⛪️","🕌","🕍","🕋","⛩","🛤","🛣","🗾","🎑","🏞","🌅","🌄","🌠","🎇","🎆","🌇","🌆","🏙","🌃","🌌","🌉","🌁"],// 物体object : ["⌚️","📱","📲","💻","⌨️","🖥","🖨","🖱","🖲","🕹","🗜","💽","💾","💿","📀","📼","📷","📸","📹","🎥","📽","🎞","📞","☎️","📟","📠","📺","📻","🎙","🎚","🎛","⏱","⏲","⏰","🕰","⌛️","⏳","📡","🔋","🔌","💡","🔦","🕯","🗑","🛢","💸","💵","💴","💶","💷","💰","💳","🧾","💎","⚖️","🔧","🔨","⚒","🛠","⛏","🔩","⚙️","⛓","🔫","💣","🔪","🗡","⚔️","🛡","🚬","⚰️","⚱️","🏺"],// 标志sign : ["❤️","🧡","💛","💚","💙","💜","🖤","💔","❣️","💕","💞","💓","💗","💖","💘","💝","💟","☮️","✝️","☪️","🕉","☸️","✡️","🔯","🕎","☯️","☦️","🛐","⛎","♈️","♉️","♊️","♋️","♌️","♍️","♎️","♏️","♐️","♑️","♒️","♓️","🆔","⚛️","🉑","☢️","☣️","📴","📳","🈶","🈚️","🈸","🈺","🈷️","✴️","🆚","💮","🉐","㊙️","㊗️","🈴","🈵","🈹","🈲","🅰️","🅱️","🆎","🆑","🅾️","🆘","❌","⭕️","🛑","⛔️","📛","🚫","💯","💢","♨️","🚷","🚯","🚳","🚱","🔞","📵","🚭","❗️","❕","❓","❔","‼️","⁉️","🔅","🔆","〽️","⚠️","🚸","🔱","⚜️","🔰","♻️","✅","🈯️","💹","❇️","✳️","❎","🌐","💠","Ⓜ️","🌀","💤","🏧","🚾","♿️","🅿️","🈳","🈂️","🛂","🛃","🛄","🛅","🚹","🚺","🚼","🚻","🚮","🎦","📶","🈁","🔣","ℹ️","🔤","🔡","🔠","🆖","🆗","🆙","🆒","🆕","🆓","0️⃣","1️⃣","2️⃣","3️⃣","4️⃣","5️⃣","6️⃣","7️⃣","8️⃣","9️⃣","🔟","🔢","#️⃣","*️⃣","⏏️","▶️","⏸","⏯","⏹","⏺","⏭","⏮","⏩","⏪","⏫","⏬","◀️","🔼","🔽","➡️","⬅️","⬆️","⬇️","↗️","↘️","↙️","↖️","↕️","↔️","↪️","↩️","⤴️","⤵️","🔀","🔁","🔂","🔄","🔃","🎵","🎶","➕","➖","➗","✖️","♾","💲","💱","™️","©️","®️","〰️","➰","➿","🔚","🔙","🔛","🔝","🔜","✔️","☑️","🔘","⚪️","⚫️","🔴","🔵","🔺","🔻","🔸","🔹","🔶","🔷","🔳","🔲","▪️","▫️","◾️","◽️","◼️","◻️","⬛️","⬜️","🔈","🔇","🔉","🔊","🔔","🔕","📣","📢","👁🗨","💬","💭","🗯","♠️","♣️","♥️","♦️","🃏","🎴","🀄️","🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧"]},},onLoad() {// 页面默认显示表情,用于初始化,初始化完成隐藏this.setData({emojiView : true});},textInput : function (e) {this.setData({ text : e.detail.value });},/** 用于获取最后输入的光标位置 */textSelect : function (e) {this.setData({ textIndex : e.detail.cursor });},/** 打开/关闭表情 */openEmoji : function () {var that = this;this.setData({emojiView : !that.data.emojiView});},/** 表情插入 */emojiInput : function (e) {var that = this;var text = that.data.text;var textIndex = that.data.textIndex;var emoji = e.currentTarget.dataset.emoji;text = text.substring(0, textIndex) + emoji + text.substring(textIndex, text.length);this.setData({text : text,textIndex : textIndex + emoji.length});}
});
全部源码地址
github:https://github.com/1711680493/WechatEmojiDemo