当前位置:首页 > VUE

vue 实现添加删除 div

2026-01-22 13:02:05VUE

使用 Vue 实现动态添加和删除 Div

在 Vue 中动态添加和删除 Div 可以通过数据驱动的方式实现。以下是具体实现方法:

数据绑定与列表渲染

通过 v-for 指令渲染一个 Div 列表,并使用数组来管理这些 Div:

<template>
  <div>
    <button @click="addDiv">添加 Div</button>
    <div v-for="(item, index) in divList" :key="index">
      {{ item.content }}
      <button @click="removeDiv(index)">删除</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      divList: []
    }
  },
  methods: {
    addDiv() {
      this.divList.push({
        content: `Div ${this.divList.length + 1}`
      })
    },
    removeDiv(index) {
      this.divList.splice(index, 1)
    }
  }
}
</script>

使用唯一标识作为 key

为了提高渲染性能,建议为每个 Div 分配唯一 ID 作为 key:

<template>
  <div>
    <button @click="addDiv">添加 Div</button>
    <div v-for="item in divList" :key="item.id">
      {{ item.content }}
      <button @click="removeDiv(item.id)">删除</button>
    </div>
  </div>
</template>

<script>
let nextId = 1

export default {
  data() {
    return {
      divList: []
    }
  },
  methods: {
    addDiv() {
      this.divList.push({
        id: nextId++,
        content: `Div ${this.divList.length + 1}`
      })
    },
    removeDiv(id) {
      this.divList = this.divList.filter(item => item.id !== id)
    }
  }
}
</script>

添加动画效果

可以为添加和删除操作添加过渡动画:

<template>
  <div>
    <button @click="addDiv">添加 Div</button>
    <transition-group name="fade" tag="div">
      <div v-for="item in divList" :key="item.id" class="item">
        {{ item.content }}
        <button @click="removeDiv(item.id)">删除</button>
      </div>
    </transition-group>
  </div>
</template>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
.item {
  margin: 10px 0;
  padding: 10px;
  border: 1px solid #ddd;
}
</style>

使用组件封装

对于更复杂的 Div 内容,可以将其封装为组件:

<template>
  <div>
    <button @click="addDiv">添加 Div</button>
    <div v-for="item in divList" :key="item.id">
      <custom-div :content="item.content" @remove="removeDiv(item.id)" />
    </div>
  </div>
</template>

<script>
import CustomDiv from './CustomDiv.vue'

export default {
  components: {
    CustomDiv
  },
  data() {
    return {
      divList: []
    }
  },
  methods: {
    addDiv() {
      this.divList.push({
        id: Date.now(),
        content: `Div ${this.divList.length + 1}`
      })
    },
    removeDiv(id) {
      this.divList = this.divList.filter(item => item.id !== id)
    }
  }
}
</script>

CustomDiv.vue 中:

<template>
  <div class="custom-div">
    {{ content }}
    <button @click="$emit('remove')">删除</button>
  </div>
</template>

<script>
export default {
  props: {
    content: String
  }
}
</script>

这些方法提供了在 Vue 中实现动态添加和删除 Div 的不同方案,可以根据具体需求选择适合的方式。

vue 实现添加删除 div

标签: vuediv
分享给朋友:

相关文章

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <templ…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-s…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…