当前位置:首页 > VUE

vue实现groupbox

2026-03-07 07:01:33VUE

实现 GroupBox 组件的方法

在 Vue 中实现类似 GroupBox 的组件,可以通过封装一个自定义组件来实现。GroupBox 通常用于将相关控件分组,并带有标题边框。

基础实现

创建一个 Vue 单文件组件 GroupBox.vue

<template>
  <div class="group-box">
    <fieldset>
      <legend v-if="title">{{ title }}</legend>
      <slot></slot>
    </fieldset>
  </div>
</template>

<script>
export default {
  name: 'GroupBox',
  props: {
    title: {
      type: String,
      default: ''
    }
  }
}
</script>

<style scoped>
.group-box fieldset {
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 10px;
  margin: 10px 0;
}

.group-box legend {
  padding: 0 5px;
  font-size: 14px;
  color: #666;
}
</style>

使用方法

在父组件中引入并使用:

<template>
  <div>
    <group-box title="用户信息">
      <div>姓名: <input type="text"></div>
      <div>年龄: <input type="number"></div>
    </group-box>

    <group-box title="联系方式">
      <div>电话: <input type="tel"></div>
      <div>邮箱: <input type="email"></div>
    </group-box>
  </div>
</template>

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

export default {
  components: {
    GroupBox
  }
}
</script>

高级功能扩展

如果需要更灵活的 GroupBox,可以添加折叠功能:

vue实现groupbox

<template>
  <div class="group-box">
    <fieldset>
      <legend v-if="title" @click="toggle">
        {{ title }}
        <span class="toggle-icon">{{ isOpen ? '−' : '+' }}</span>
      </legend>
      <div v-show="isOpen">
        <slot></slot>
      </div>
    </fieldset>
  </div>
</template>

<script>
export default {
  name: 'GroupBox',
  props: {
    title: {
      type: String,
      default: ''
    },
    collapsible: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      isOpen: true
    }
  },
  methods: {
    toggle() {
      if (this.collapsible) {
        this.isOpen = !this.isOpen
      }
    }
  }
}
</script>

<style scoped>
.group-box fieldset {
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 10px;
  margin: 10px 0;
}

.group-box legend {
  padding: 0 5px;
  font-size: 14px;
  color: #666;
  cursor: pointer;
  user-select: none;
}

.toggle-icon {
  margin-left: 5px;
}
</style>

使用扩展版本

<group-box title="高级选项" collapsible>
  <div>选项1: <input type="checkbox"></div>
  <div>选项2: <input type="checkbox"></div>
</group-box>

以上实现提供了基础的 GroupBox 功能,可以根据项目需求进一步定制样式和功能。

标签: vuegroupbox
分享给朋友:

相关文章

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和有…

vue实现treeview

vue实现treeview

Vue 实现 TreeView 的方法 使用递归组件实现 TreeView 递归组件是 Vue 中实现 TreeView 的常见方式。通过组件调用自身,可以轻松处理嵌套的树形结构数据。 <te…

vue键盘实现

vue键盘实现

监听键盘事件 在Vue中监听键盘事件可以通过v-on指令或@缩写实现。常见的键盘事件包括keydown、keyup和keypress。例如监听回车键事件: <template> &l…

vue watch实现

vue watch实现

在 Vue 中实现 watch 监听数据变化 Vue 的 watch 选项用于监听数据变化并执行相应的回调函数。以下是几种常见的实现方式: 基础用法 export default { data(…

vue实现插件

vue实现插件

Vue 插件实现方法 Vue 插件通常用于为 Vue 应用添加全局功能或共享功能。以下是实现 Vue 插件的核心步骤: 插件基本结构 Vue 插件需要暴露一个 install 方法,该方法接收 Vu…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…