相关文章推荐
帅呆的生菜  ·  python socket.error: ...·  1 年前    · 
想发财的茴香  ·  asp.net ...·  2 年前    · 

插件地址: https://github.com/jm-david/emoji-mart-vue

需要注意的细节:

  • 获取光标位置
  • 插入完成后的光标位置,vue的v-model渲染会有一个过程,需要加一个延时再去计算移动光标位置
<template>
    <textarea id="textarea" v-model="content" />
    <div class="face">
      <Picker  @select="showEmoji" :i18n="I18N" />
</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.native
      var oText = document.getElementById('textarea')
      var index = this.getCursortPosition(oText)
      this.$nextTick( () => {
        this.insert(oText,str,index)
    // 插入表情
    insert (oText,varstr,index) {
      var text = this.content
      let startStr = text.substring(0, index)
      let endStr = text.substring(index, text.length)
      this.content = startStr + varstr + endStr
      setTimeout(() => {
        this.setCaretPosition(oText, index+2)
      }, 10);
    // 获取光标位置
    getCursortPosition (obj) {
      var cursorIndex = 0
      if (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>
最近的项目用到了表情包,咱们以前项目有用到emoji-vue。我就直接拿来用了。使用过程中真的一言难尽啊~~~~~
先附上一张这个插件在Vue中使用的列子。可以清楚的看到一个比较重要的方法onInput和myText属性。没错这就是我一言难尽的地方,使用这个demo会出现两个问题
这里有个在线测试地址emoji-vue在线测试
接下来咱们提提这个插件两处问题,先给一张自己测试的图。
1 我测试的时候,开始输入了文字,后面准备在文字后面添加表情,但是无论怎么搞,表情都会在前面添加
2 另一个问
				
项目已弃用。 请改用 。 Vue Emoji Mart是可定制的Slack Vue表情符号选择器组件,灵感来自[Emoji Mart]( )。 • 团队带给您的 npm install --save vue-emoji-mart < template> < Picker :emoji-size =" emojiSize " :per-line =" perLine " :skins =" skin " :native =" native " :set =" set " setCaretPosition : function(pos) { // 设置光标 var ctrl = this[0]; if (ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(pos, pos); } else if (ctrl.createTextRange) {
项目是一个分支,具有许多性能修复,测试和结构代码更改。 有关详细信息,请参见。 原始组件的大约需要2秒钟,时间甚至更长,因此无法在弹出窗口中使用。 这就是派生并更改它的原因,演示在,使用“显示/隐藏选择器”按钮查看创建/销毁性能 最初的项目是从为React编写的分叉的。 Emoji MartVue)是类似Slack的可自定义项VueJS的表情符号选择器组件• 实时演示应用程序: : 演示应用程序代码位于。 从npm安装: npm install --save emoji-mart-vue-fast 。 也可以直接从github安装(可能对fork有用): npm install --save serebrov/emoji-mart-vue#5.4.9. 这是发行列表。 Vue 3支持 组件可与Vue 3配合使用,这是一个简单的演示应用程序。 现场演示:
表情符号 :grinning_face: :beaming_face_with_smiling_eyes: :face_with_tears_of_joy: :rolling_on_the_floor_laughing: :grinning_face_with_big_eyes: :grinning_face_with_smiling_eyes: :grinning_face_with_sweat: :grinning_squinting_face: :winking_face: :smiling_face_with_smiling_eyes: :face_savoring_food: 一个Vue.js项目,实现了一个输入字段插件,允许通过下拉菜单添加表情符号。 安装 :gear_selector: npm i emoji-vue --save 利用 :smiling_face_with_sunglasses: :OK_hand_light_skin_tone: import VueEmoji from 'emoji-vue' //in component
vue组件地址: https://vuejsexamples.com/a-fast-plug-n-play-twitter-emoji-picker-for-vue/ github地址: https://github.com/kevinfaveri/vue-twemoji-pic
要在idea中运行vue项目,可以按照以下步骤操作: 1. 安装Node.js:在idea中打开终端或命令行,输入node -v命令检查是否已安装Node.js。如果没有安装,需要先下载安装。 2. 安装Vue CLI:在终端或命令行中输入npm install -g @vue/cli命令安装Vue CLI。 3. 创建Vue项目:在idea中使用Vue CLI创建一个Vue项目,可以在终端或命令行中输入vue create project-name命令,其中project-name是项目名称,然后选择需要安装的插件。 4. 配置运行环境:在idea中打开Vue项目文件,在package.json文件中添加"serve": "vue-cli-service serve",然后在终端或命令行中运行npm run serve命令启动项目。 5. 测试项目:启动项目后,在浏览器中访问http://localhost:8080,即可查看项目运行效果。 以上就是在idea中运行Vue项目的简单步骤,需要注意的是,如果项目中使用了一些特定的库或插件,需要先安装相应的依赖库,才能运行项目。 ### 回答2: 在进行 IDEA 运行 Vue 项目之前,需要确保装有 Node.js 和 npm,如未安装,需先在官网下载 Node.js 的安装程序进行安装。 步骤如下: 1. 用 IDEA 打开 Vue 项目,找到项目文件夹 2. 打开终端,切换到当前项目文件夹,输入以下命令 npm install 3. 安装完成后,在终端输入以下命令 npm run dev 4. 等待运行成功后,打开浏览器,在地址栏输入以下网址 http://localhost:8080/ 5. 即可访问运行成功的 Vue 项目。 如果需要部署项目,则需在终端输入以下命令进行打包: npm run build 打包完成后,将生成的 dist 文件夹中的文件上传至服务器即可。 当然,如果你使用的是 IDEA 的 Vue 插件,也可以直接在 IDEA 中运行项目。具体方法是在 IDEA 的顶部菜单栏点击 Run,选择 Run “npm”的相应的项,即可运行项目。 ### 回答3: Idea是一款常用的IDE开发工具,也可以用于运行Vue.js项目。下面将详细讲解如何在Idea中运行Vue项目: 1. 安装Node.js和npm Vue.js项目运行需要依赖Node.js和npm,请确保已经安装了最新版本的Node.js和npm。安装完成后,在命令行中输入以下命令来检查是否安装成功: node -v npm -v 2. 安装Vue CLI Vue CLI是一个官方提供的一个命令行工具,可以用来快速创建Vue.js项目,并且集成了大量的开发工具。在命令行中输入以下命令安装Vue CLI: npm install -g @vue/cli 安装完成后,可以使用以下命令检查Vue CLI是否安装成功: vue --version 3. 创建Vue.js项目 在Idea中打开一个空的工程,然后在命令行中进入该工程目录,然后输入以下命令创建一个Vue.js项目vue create my-project 其中,my-project是项目名称,可以根据自己的需求修改。创建完成后,进入项目目录: cd my-project 4. 运行Vue.js项目 在Idea中,使用终端工具打开当前项目所在的工程,然后在终端中输入以下命令运行Vue.js项目: npm run serve 该命令会启动一个本地的开发服务器,并自动打开浏览器访问项目。如果没有自动打开浏览器,可以手动在浏览器中输入以下地址: http://localhost:8080 可以看到项目已经成功运行了。 5. 打包Vue.js项目项目开发完成后,需要将Vue.js项目打包成静态文件,部署到Web服务器中。在终端中,输入以下命令打包Vue.js项目: npm run build 该命令会在根目录下生成一个dist目录,里面包含了所有的静态文件。将该目录上传到Web服务器即可完成部署。 总结:以上就是在Idea中运行Vue.js项目的详细步骤,如果按照以上步骤操作,应该可以顺利运行Vue.js项目了。如果遇到问题,可以去Vue.js的官方网站或者Stack Overflow等开发者社区寻求帮助。
CSDN-Ada助手: 非常感谢博主撰写了这篇关于Kafka消费者的文章,让我们对Kafka消费者有了更深入的了解。博客内容丰富,讲解详细,对于初学者来说十分友好。希望博主能继续创作,分享更多有价值的知识。感谢博主的付出,期待更多精彩的博客。 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 vue项目添加emoji表情 呆呆bg: <div></div> 表情包 vue项目添加emoji表情 呆呆bg: <div></div> vue项目添加emoji表情 时间走了光: