当前位置:首页 > VUE

vue 实现添加删除 div

2026-01-22 13:02:05VUE

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

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

数据绑定与列表渲染

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

vue 实现添加删除 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>

添加动画效果

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

vue 实现添加删除 div

<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 的不同方案,可以根据具体需求选择适合的方式。

标签: vuediv
分享给朋友:

相关文章

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-toa…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{…

vue实现逻辑

vue实现逻辑

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

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现引导页面

vue实现引导页面

vue实现引导页面的方法 使用Vue实现引导页面可以通过多种方式完成,以下是几种常见的方法: 使用第三方库driver.js 安装driver.js库: npm install driver.j…