最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue界面發(fā)送表情的實(shí)現(xiàn)代碼

 更新時(shí)間:2020年09月11日 12:37:40   作者:前端阿龍  
這篇文章主要介紹了vue界面發(fā)送表情的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

完全照搬不一定能寫出來(lái) 只是讓看個(gè)思想

<template>  
 <section class="dialogue-section clearfix" >
      <div class="row clearfix" v-for="(item,index) in msgs" :key = index>
        <img :src="item.uid == myInfo.uid ? myInfo.avatar :otherInfo.avatar" :class="item.uid == myInfo.uid ? 'headerleft' : 'headerright'">
        <p :class="item.uid == myInfo.uid ? 'textleft' : 'textright'" v-html="customEmoji(item.content)"></p>
      </div>
    </section>
     <div id="emoji-list" class="flex-column" v-if="emojiShow"> //首先根據(jù)這個(gè)來(lái)判斷發(fā)送表情彈窗用不用出現(xiàn)
       <div class="flex-cell flex-row" v-for="list in imgs">
        <div class="flex-cell flex-row cell" v-for="item in list" @click="inputEmoji(item)">
         <img :src="'./emoji/'+ item + '.png'">
        </div>
       </div>
      </div>
</template>
<script>
import { sendMsg } from "@/ws"; //是一個(gè)長(zhǎng)連接
import _ from "lodash";//這個(gè)是js一個(gè)很強(qiáng)大的庫(kù) 
import eventBus from '@/eventBus'//這是一個(gè)子父?jìng)鬟f的公共文件
console.log(emoji)
export default {
 data() {
  this.imgs = _.chunk(emoji, 6) //這個(gè)是調(diào)用lodash庫(kù)的chunk方法 把 六個(gè)元素分成一個(gè)數(shù)組只不過(guò)是emoji這個(gè)數(shù)組中的二維數(shù)組
  return {
   emojiShow: false //剛開(kāi)始默認(rèn)不顯示 點(diǎn)擊按鈕顯示 點(diǎn)擊的按鈕上可以寫@click='emojiShow=emojiShow'這種寫法
  };
 },
 methods: {
  customEmoji(text) { //這個(gè)函數(shù)就是服務(wù)器端把傳過(guò)來(lái)的名稱轉(zhuǎn)化為圖片的
   return text.replace(/\[([A-Za-z0-9_]+)\]/g, '<img src="./emoji/$1.png" style="width:30px; height:30px;">')
  },
  inputEmoji(pic) {
   this.content += `[${pic}]`//傳過(guò)來(lái)的名字轉(zhuǎn)為圖片
  }
};
</script>
<style scoped>
@import '../../assets/css/dialogue.css';

#emoji-list {
 height: 230px;
 background: #fff;
}
#emoji-list .cell {
 line-height: 13vh;
 border-right: 1rpx solid #ddd;
 border-bottom: 1rpx solid #ddd;
}
.flex-row {
 display: flex;
 flex-direction: row;
 justify-content: center;
 align-items: center;
}
.flex-column {
 display: flex;
 flex-direction: column;
 justify-content: center;
 align-items: stretch;
}
.flex-cell {
 flex: 1;
}
.cell img {
 width: 35px;
 height: 35px;
}
</style>

補(bǔ)充知識(shí):vue+element-ui實(shí)現(xiàn)聊天表情包

我是用的本地json數(shù)據(jù)實(shí)現(xiàn)的,表情不是很多,首先創(chuàng)建個(gè)json文件,代碼如下:

[{
  "codes": "1F600",
  "char": "😀",
  "name": "grinning face"
 },
 {
  "codes": "1F603",
  "char": "😃",
  "name": "grinning face with big eyes"
 },
 {
  "codes": "1F604",
  "char": "😄",
  "name": "grinning face with smiling eyes"
 },
 {
  "codes": "1F601",
  "char": "😁",
  "name": "beaming face with smiling eyes"
 },
 {
  "codes": "1F606",
  "char": "😆",
  "name": "grinning squinting face"
 },
 {
  "codes": "1F605",
  "char": "😅",
  "name": "grinning face with sweat"
 },
 {
  "codes": "1F923",
  "char": "🤣",
  "name": "rolling on the floor laughing"
 },
 {
  "codes": "1F602",
  "char": "😂",
  "name": "face with tears of joy"
 },
 {
  "codes": "1F642",
  "char": "🙂",
  "name": "slightly smiling face"
 },
 {
  "codes": "1F643",
  "char": "🙃",
  "name": "upside-down face"
 },
 {
  "codes": "1F609",
  "char": "😉",
  "name": "winking face"
 },
 {
  "codes": "1F60A",
  "char": "😊",
  "name": "smiling face with smiling eyes"
 },
 {
  "codes": "1F607",
  "char": "😇",
  "name": "smiling face with halo"
 },
 {
  "codes": "1F970",
  "char": "🥰",
  "name": "smiling face with hearts"
 },
 {
  "codes": "1F60D",
  "char": "😍",
  "name": "smiling face with heart-eyes"
 },
 {
  "codes": "1F929",
  "char": "🤩",
  "name": "star-struck"
 },
 {
  "codes": "1F618",
  "char": "😘",
  "name": "face blowing a kiss"
 },
 {
  "codes": "1F617",
  "char": "😗",
  "name": "kissing face"
 },
 {
  "codes": "1F61A",
  "char": "😚",
  "name": "kissing face with closed eyes"
 },
 {
  "codes": "1F619",
  "char": "😙",
  "name": "kissing face with smiling eyes"
 },
 {
  "codes": "1F44B",
  "char": "👋",
  "name": "waving hand"
 },
 {
  "codes": "1F91A",
  "char": "🤚",
  "name": "raised back of hand"
 },
 {
  "codes": "1F590",
  "char": "🖐",
  "name": "hand with fingers splayed"
 },
 {
  "codes": "270B",
  "char": "✋",
  "name": "raised hand"
 },
 {
  "codes": "1F596",
  "char": "🖖",
  "name": "vulcan salute"
 },
 {
  "codes": "1F44C",
  "char": "👌",
  "name": "OK hand"
 },
 {
  "codes": "1F90F",
  "char": "🤏",
  "name": "pinching hand"
 },
 {
  "codes": "270C",
  "char": "✌",
  "name": "victory hand"
 },
 {
  "codes": "1F91E",
  "char": "🤞",
  "name": "crossed fingers"
 },
 {
  "codes": "1F91F",
  "char": "🤟",
  "name": "love-you gesture"
 },
 {
  "codes": "1F918",
  "char": "🤘",
  "name": "sign of the horns"
 },
 {
  "codes": "1F919",
  "char": "🤙",
  "name": "call me hand"
 },
 {
  "codes": "1F448",
  "char": "👈",
  "name": "backhand index pointing left"
 },
 {
  "codes": "1F449",
  "char": "👉",
  "name": "backhand index pointing right"
 },
 {
  "codes": "1F446",
  "char": "👆",
  "name": "backhand index pointing up"
 },
 {
  "codes": "1F595",
  "char": "🖕",
  "name": "middle finger"
 },
 {
  "codes": "1F447",
  "char": "👇",
  "name": "backhand index pointing down"
 },
 {
  "codes": "261D FE0F",
  "char": "☝️",
  "name": "index pointing up"
 },
 {
  "codes": "1F44D",
  "char": "👍",
  "name": "thumbs up"
 },
 {
  "codes": "1F44E",
  "char": "👎",
  "name": "thumbs down"
 },
 {
  "codes": "270A",
  "char": "✊",
  "name": "raised fist"
 },
 {
  "codes": "1F44A",
  "char": "👊",
  "name": "oncoming fist"
 },
 {
  "codes": "1F91B",
  "char": "🤛",
  "name": "left-facing fist"
 },
 {
  "codes": "1F91C",
  "char": "🤜",
  "name": "right-facing fist"
 }

]

vue組件中代碼直接貼出來(lái),廢話不多說(shuō):

<template>
 <div class="chatIcon">
  <el-popover
   placement="top-start"
   width="400"
   trigger="click"
   class="emoBox"
  >
   <div class="emotionList">
    <a
     href="javascript:void(0);" rel="external nofollow" 
     @click="getEmo(index)"
     v-for="(item, index) in faceList"
     :key="index"
     class="emotionItem"
     >{{ item }}</a
    >
   </div>
   <el-button
    class="emotionSelect"
    icon="iconfont icon-biaoqing"
    slot="reference"
   ></el-button>
  </el-popover>
  <el-input
   v-model="textarea"
   class="chatText"
   resize="none"
   type="textarea"
   id="textarea"
   rows="5"
   @keyup.enter.native="sendInfo"
  ></el-input>
 </div>
</template>
<script>
const appData = require("@/utils/emoji.json");
export default {
 mounted() {
  for (let i in appData) {
   this.faceList.push(appData[i].char);
  }
 },
 data() {
  return {
   faceList: [],
   textarea: ""
  };
 },
 methods: {
  getEmo(index) {
   var textArea = document.getElementById("textarea");
   function changeSelectedText(obj, str) {
    if (window.getSelection) {
     // 非IE瀏覽器
     textArea.setRangeText(str);
     // 在未選中文本的情況下,重新設(shè)置光標(biāo)位置
     textArea.selectionStart += str.length;
     textArea.focus();
    } else if (document.selection) {
     // IE瀏覽器
     obj.focus();
     var sel = document.selection.createRange();
     sel.text = str;
    }
   }
   changeSelectedText(textArea, this.faceList[index]);
   this.textarea = textArea.value; // 要同步data中的數(shù)據(jù)
   // console.log(this.faceList[index]);
   return;
  }
 }
};
</script>

<style lang="scss">
/* el-popover是和app同級(jí)的,所以scoped的局部屬性設(shè)置了無(wú)效 */
/* 需要設(shè)置全局style */
.el-popover {
 height: 200px;
 width: 400px;
 overflow: scroll;
 overflow-x: auto;
}
</style>

<style scoped>
.chatIcon {
 padding: 0 10px;
 font-size: 25px;
}
.emotionList {
 display: flex;
 flex-wrap: wrap;
 padding: 5px;
}
.emotionItem {
 width: 10%;
 font-size: 20px;
 text-align: center;
}
/*包含以下四種的鏈接*/
.emotionItem {
 text-decoration: none;
}
/*正常的未被訪問(wèn)過(guò)的鏈接*/
.emotionItem:link {
 text-decoration: none;
}
/*已經(jīng)訪問(wèn)過(guò)的鏈接*/
.emotionItem:visited {
 text-decoration: none;
}
/*鼠標(biāo)劃過(guò)(停留)的鏈接*/
.emotionItem:hover {
 text-decoration: none;
}
/* 正在點(diǎn)擊的鏈接*/
.emotionItem:active {
 text-decoration: none;
}
</style>

以上這篇vue界面發(fā)送表情的實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式

    vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式

    最近的項(xiàng)目完成后,在性能優(yōu)化階段需要做按鈕的防止重復(fù)點(diǎn)擊功能,本文主要介紹了vue uniapp 防止按鈕多次點(diǎn)擊的三種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Vue select 綁定動(dòng)態(tài)變量的實(shí)例講解

    Vue select 綁定動(dòng)態(tài)變量的實(shí)例講解

    這篇文章主要介紹了Vue select 綁定動(dòng)態(tài)變量的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • vue如何將對(duì)象中所有的key賦為空值

    vue如何將對(duì)象中所有的key賦為空值

    這篇文章主要介紹了vue如何將對(duì)象中所有的key賦為空值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 前端vue2?element?ui高效配置化省時(shí)又省力

    前端vue2?element?ui高效配置化省時(shí)又省力

    這篇文章主要為大家介紹了前端高效配置化vue2?element?ui省時(shí)又省力,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue常見(jiàn)報(bào)錯(cuò)整理大全(從此報(bào)錯(cuò)不害怕)

    Vue常見(jiàn)報(bào)錯(cuò)整理大全(從此報(bào)錯(cuò)不害怕)

    寫代碼的過(guò)程中一定會(huì)遇到報(bào)錯(cuò),遇到報(bào)錯(cuò)不要擔(dān)心,認(rèn)真分析就可以解決報(bào)錯(cuò),同時(shí)積累經(jīng)驗(yàn),早日成為大牛,這篇文章主要給大家介紹了關(guān)于Vue常見(jiàn)報(bào)錯(cuò)整理的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Vue?中?provide和inject的使用

    Vue?中?provide和inject的使用

    這篇文章主要介紹了Vue中provide和inject的使用,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Vue computed計(jì)算屬性總結(jié)記錄

    Vue computed計(jì)算屬性總結(jié)記錄

    在vue中,有時(shí)候你需要對(duì)data中的數(shù)據(jù)進(jìn)行處理,或者對(duì)抓取的數(shù)據(jù)進(jìn)行處理之后再掛載呈現(xiàn)到標(biāo)簽中,這時(shí)候你就需要計(jì)算屬性了,當(dāng)然看到這里你可能還是不了解那下面我舉幾個(gè)實(shí)例并附代碼解釋
    2023-02-02
  • vue限制文本輸入框只允許輸入字母、數(shù)字、禁止輸入特殊字符

    vue限制文本輸入框只允許輸入字母、數(shù)字、禁止輸入特殊字符

    這篇文章主要介紹了vue限制文本輸入框只允許輸入字母、數(shù)字、不允許輸入特殊字符,通過(guò)監(jiān)聽(tīng)表單輸入的內(nèi)容,使用方法的缺陷,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10
  • 關(guān)于在vue中實(shí)現(xiàn)過(guò)渡動(dòng)畫的代碼示例

    關(guān)于在vue中實(shí)現(xiàn)過(guò)渡動(dòng)畫的代碼示例

    Vue是一款流行的前端框架,支持過(guò)渡動(dòng)畫的實(shí)現(xiàn)是其中的一項(xiàng)重要特性,在Vue中,使用過(guò)渡動(dòng)畫可以為用戶提供更加友好的用戶體驗(yàn),下面我將為大家介紹一下子如何在Vue中實(shí)現(xiàn)過(guò)渡動(dòng)畫,需要的朋友可以參考下
    2023-06-06
  • vue實(shí)現(xiàn)短信驗(yàn)證碼輸入框

    vue實(shí)現(xiàn)短信驗(yàn)證碼輸入框

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)短信驗(yàn)證碼輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論

揭西县| 成安县| 广河县| 塔城市| 安溪县| 分宜县| 长丰县| 通州区| 大同县| 延安市| 巴青县| 黎川县| 和平区| 区。| 区。| 通州区| 徐汇区| 信丰县| 石泉县| 来凤县| 福海县| 通江县| 潞西市| 阿克苏市| 庆安县| 新津县| 措美县| 景东| 繁峙县| 商都县| 乌鲁木齐县| 安龙县| 自贡市| 神池县| 色达县| 荃湾区| 荔浦县| 屯留县| 沙坪坝区| 肇源县| 高台县|