当前位置:首页 > VUE

vue div input框实现

2026-01-22 23:08:19VUE

实现 Vue 中的 div input 框

在 Vue 中实现一个 div 输入框可以通过多种方式完成,以下是一种常见的方法,结合 contenteditable 属性和 Vue 的数据绑定。

基本实现

创建一个可编辑的 div,并将其内容与 Vue 的数据绑定。

vue div input框实现

<template>
  <div>
    <div 
      contenteditable="true" 
      @input="handleInput"
      v-html="content"
    ></div>
    <p>当前内容: {{ content }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      content: ''
    }
  },
  methods: {
    handleInput(e) {
      this.content = e.target.innerHTML;
    }
  }
}
</script>

使用 v-model 的自定义组件

如果需要更符合 Vue 的使用习惯,可以创建一个自定义组件,支持 v-model

vue div input框实现

<template>
  <div>
    <editable-div v-model="content"></editable-div>
    <p>当前内容: {{ content }}</p>
  </div>
</template>

<script>
export default {
  components: {
    'editable-div': {
      props: ['value'],
      template: `
        <div 
          contenteditable="true"
          @input="update"
          v-html="value"
        ></div>
      `,
      methods: {
        update(e) {
          this.$emit('input', e.target.innerHTML);
        }
      }
    }
  },
  data() {
    return {
      content: ''
    }
  }
}
</script>

处理纯文本内容

如果希望处理纯文本而非 HTML,可以使用 textContent 替代 innerHTML

<template>
  <div>
    <div 
      contenteditable="true" 
      @input="handleInput"
      ref="editableDiv"
    ></div>
    <p>当前内容: {{ content }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      content: ''
    }
  },
  methods: {
    handleInput() {
      this.content = this.$refs.editableDiv.textContent;
    }
  }
}
</script>

添加样式和交互

为可编辑 div 添加样式和交互效果,提升用户体验。

<template>
  <div>
    <div 
      contenteditable="true" 
      @input="handleInput"
      @focus="handleFocus"
      @blur="handleBlur"
      :class="{ 'editing': isEditing }"
      v-html="content"
    ></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      content: '',
      isEditing: false
    }
  },
  methods: {
    handleInput(e) {
      this.content = e.target.innerHTML;
    },
    handleFocus() {
      this.isEditing = true;
    },
    handleBlur() {
      this.isEditing = false;
    }
  }
}
</script>

<style>
div[contenteditable="true"] {
  border: 1px solid #ccc;
  padding: 8px;
  min-height: 20px;
}
div[contenteditable="true"].editing {
  border-color: #42b983;
}
</style>

这些方法可以根据具体需求进行调整,适用于不同的场景。

标签: vuediv
分享给朋友:

相关文章

vue实现前端注册

vue实现前端注册

Vue 实现前端注册功能 注册表单设计 使用 Vue 的模板语法创建注册表单,包含用户名、邮箱、密码和确认密码字段。表单需绑定 v-model 实现双向数据绑定。 <template>…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue实现高亮

vue实现高亮

Vue 实现文本高亮的方法 在 Vue 中实现文本高亮可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-html 指令 通过 v-html 指令可以动态插入 HTML 内容,将需…

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的Ca…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue实现拍照

vue实现拍照

Vue实现拍照功能 在Vue中实现拍照功能通常需要结合浏览器的MediaDevices API和Canvas元素。以下是具体实现方法: 安装依赖(可选) 如果需要更简单的封装,可以安装vue-w…