当前位置:首页 > VUE

vue实现tag标签

2026-02-20 13:03:10VUE

Vue 实现 Tag 标签的方法

在 Vue 中实现 Tag 标签可以通过多种方式完成,以下是几种常见的方法:

使用原生 HTML 和 CSS

通过 Vue 的模板语法和样式绑定,可以快速实现基础的 Tag 标签功能。

vue实现tag标签

<template>
  <div class="tag-container">
    <span 
      v-for="(tag, index) in tags" 
      :key="index" 
      class="tag"
      @click="removeTag(index)"
    >
      {{ tag }}
      <span class="close-icon">×</span>
    </span>
    <input 
      v-model="newTag" 
      @keyup.enter="addTag" 
      placeholder="添加标签"
    >
  </div>
</template>

<script>
export default {
  data() {
    return {
      tags: ['Vue', 'JavaScript', '前端'],
      newTag: ''
    }
  },
  methods: {
    addTag() {
      if (this.newTag.trim() && !this.tags.includes(this.newTag.trim())) {
        this.tags.push(this.newTag.trim());
        this.newTag = '';
      }
    },
    removeTag(index) {
      this.tags.splice(index, 1);
    }
  }
}
</script>

<style>
.tag-container {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.tag {
  background: #e0e0e0;
  padding: 4px 8px;
  border-radius: 4px;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
}
.close-icon {
  margin-left: 4px;
}
input {
  border: 1px solid #ccc;
  padding: 4px 8px;
  border-radius: 4px;
}
</style>

使用第三方 UI 库

许多流行的 Vue UI 库提供了现成的 Tag 组件,例如 Element UI、Ant Design Vue 等。

vue实现tag标签

以 Element UI 为例:

<template>
  <el-tag
    v-for="(tag, index) in tags"
    :key="index"
    closable
    @close="removeTag(index)"
  >
    {{ tag }}
  </el-tag>
  <el-input
    v-model="newTag"
    placeholder="添加标签"
    @keyup.enter.native="addTag"
  />
</template>

<script>
export default {
  data() {
    return {
      tags: ['Vue', 'Element', 'UI'],
      newTag: ''
    }
  },
  methods: {
    addTag() {
      if (this.newTag.trim() && !this.tags.includes(this.newTag.trim())) {
        this.tags.push(this.newTag.trim());
        this.newTag = '';
      }
    },
    removeTag(index) {
      this.tags.splice(index, 1);
    }
  }
}
</script>

实现可编辑的 Tag 标签

如果需要更复杂的交互,如双击编辑标签内容,可以扩展基础实现:

<template>
  <div class="tag-container">
    <span 
      v-for="(tag, index) in tags" 
      :key="index" 
      class="tag"
      @dblclick="editTag(index)"
    >
      <span v-if="editingIndex !== index">{{ tag }}</span>
      <input
        v-else
        v-model="tags[index]"
        @blur="saveEdit"
        @keyup.enter="saveEdit"
        ref="editInput"
      >
      <span class="close-icon" @click="removeTag(index)">×</span>
    </span>
    <input 
      v-model="newTag" 
      @keyup.enter="addTag" 
      placeholder="添加标签"
    >
  </div>
</template>

<script>
export default {
  data() {
    return {
      tags: ['可编辑', '标签'],
      newTag: '',
      editingIndex: -1
    }
  },
  methods: {
    addTag() {
      if (this.newTag.trim() && !this.tags.includes(this.newTag.trim())) {
        this.tags.push(this.newTag.trim());
        this.newTag = '';
      }
    },
    removeTag(index) {
      this.tags.splice(index, 1);
    },
    editTag(index) {
      this.editingIndex = index;
      this.$nextTick(() => {
        this.$refs.editInput[index].focus();
      });
    },
    saveEdit() {
      this.editingIndex = -1;
    }
  }
}
</script>

这些方法涵盖了从基础到进阶的 Tag 标签实现,可以根据项目需求选择适合的方式。

标签: 标签vue
分享给朋友:

相关文章

vue 页签实现

vue 页签实现

Vue 页签实现方法 在 Vue 中实现页签功能通常涉及动态组件、路由或状态管理。以下是几种常见的实现方式: 使用动态组件 通过 Vue 的 <component> 动态组件结合 v-f…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…

vue实现循环

vue实现循环

Vue 实现循环的方法 在 Vue 中,可以通过 v-for 指令实现循环渲染列表或对象。以下是几种常见的用法: 遍历数组 使用 v-for 遍历数组时,可以同时获取当前项和索引: <ul&…

vue 实现单点登录

vue 实现单点登录

单点登录(SSO)实现原理 单点登录允许用户通过一次身份验证访问多个系统。核心原理是用户首次登录后,认证中心颁发令牌(如Token),其他系统通过验证令牌实现免登录。 Vue中实现SSO的方案 基于…

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…