Vue 表情包輸入元件

緣氏集團技術員發表於2018-09-15

#Emotion

一個用於vue的表情輸入元件 gitee.com/jiangliyue/…

index是使用示例,emotion是元件程式碼(這裡用的是微信表情包的地址,大家可根據需要修改)

####下載安裝啟動專案檢視效果 ####npm install ####npm run dev

影象 1.png

####Emotion資料夾下Emotion檔案說明

實現原理是根據欄位對線上表情包圖片進行匹配替換 程式碼中 img 標籤的地址即為表情圖片地址,可自己根據需求替換

  mounted () {
    const name = this.$el.innerHTML
    const list = ['微笑', '撇嘴', '色', '發呆', '得意', '流淚', '害羞', '閉嘴', '睡', '大哭', '尷尬', '發怒', '調皮', '呲牙', '驚訝', '難過', '酷', '冷汗', '抓狂', '吐', '偷笑', '可愛', '白眼', '傲慢', '飢餓', '困', '驚恐', '流汗', '憨笑', '大兵', '奮鬥', '咒罵', '疑問', '噓', '暈', '折磨', '衰', '骷髏', '敲打', '再見', '擦汗', '摳鼻', '鼓掌', '糗大了', '壞笑', '左哼哼', '右哼哼', '哈欠', '鄙視', '委屈', '快哭了', '陰險', '親親', '嚇', '可憐', '菜刀', '西瓜', '啤酒', '籃球', '乒乓', '咖啡', '飯', '豬頭', '玫瑰', '凋謝', '示愛', '愛心', '心碎', '蛋糕', '閃電', '炸彈', '刀', '足球', '瓢蟲', '便便', '月亮', '太陽', '禮物', '擁抱', '強', '弱', '握手', '勝利', '抱拳', '勾引', '拳頭', '差勁', '愛你', 'NO', 'OK', '愛情', '飛吻', '跳跳', '發抖', '慪火', '轉圈', '磕頭', '回頭', '跳繩', '揮手', '激動', '街舞', '獻吻', '左太極', '右太極']
    let index = list.indexOf(name)
    let imgHTML = `<img src="https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/${index}.gif">`
    this.$nextTick(() => {
      this.$el.innerHTML = imgHTML
    })
  },
複製程式碼

####Emotion資料夾下index檔案說明

通過迴圈列表生成表情包選擇框

      <div class="emotion-box-line" v-for="(line, i) in list" :key="i" >
        <emotion class="emotion-item" v-for="(item, i) in line" :key="i" @click.native="clickHandler(item)" >{{item}}</emotion>
      </div>
複製程式碼

####最後需要注意的是表情包評論後儲存到後臺的是相關字串,展示時需要還原成圖片,具體方法可參考index檔案,我這裡用了正則匹配轉化,還是比較方便的

    <div class="text-place">
      <!-- /\#[\u4E00-\u9FA5]{1,3}\;/gi 匹配出含 #XXX; 的欄位 -->
      <p v-html="content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, emotion)"></p>
    </div>
複製程式碼

就這麼簡單,希望可以幫到有需要的童鞋( ̄▽ ̄)

相關文章