当前位置:首页 > VUE

vue实现groupbox样式

2026-03-29 09:22:21VUE

实现 GroupBox 样式的 Vue 组件

在 Vue 中实现类似 GroupBox 的样式,可以通过自定义组件结合 CSS 完成。以下是一个完整的实现方案:

基础 GroupBox 组件

创建 GroupBox.vue 文件:

vue实现groupbox样式

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

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

<style scoped>
.group-box {
  margin: 15px 0;
}

.group-box fieldset {
  border: 1px solid #ddd;
  border-radius: 4px;
  padding: 10px 15px;
  position: relative;
}

.group-box-legend {
  font-size: 14px;
  font-weight: bold;
  padding: 0 5px;
  color: #666;
  width: auto;
  border: none;
  margin-left: 10px;
}
</style>

使用 GroupBox 组件

<template>
  <div>
    <group-box title="用户信息">
      <div class="form-group">
        <label>用户名</label>
        <input type="text" v-model="username">
      </div>
      <div class="form-group">
        <label>密码</label>
        <input type="password" v-model="password">
      </div>
    </group-box>
  </div>
</template>

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

export default {
  components: {
    GroupBox
  },
  data() {
    return {
      username: '',
      password: ''
    }
  }
}
</script>

高级样式定制

可以通过 props 传递样式参数实现更灵活的定制:

vue实现groupbox样式

<template>
  <div class="group-box" :style="{ borderColor: borderColor }">
    <fieldset>
      <legend v-if="title" 
              class="group-box-legend"
              :style="{ color: titleColor }">
        {{ title }}
      </legend>
      <slot></slot>
    </fieldset>
  </div>
</template>

<script>
export default {
  name: 'GroupBox',
  props: {
    title: {
      type: String,
      default: ''
    },
    borderColor: {
      type: String,
      default: '#ddd'
    },
    titleColor: {
      type: String,
      default: '#666'
    }
  }
}
</script>

动画效果增强

添加展开/折叠功能:

<template>
  <div class="group-box">
    <fieldset>
      <legend 
        @click="toggle"
        class="group-box-legend clickable">
        {{ 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: ''
    }
  },
  data() {
    return {
      isOpen: true
    }
  },
  methods: {
    toggle() {
      this.isOpen = !this.isOpen
    }
  }
}
</script>

<style scoped>
.clickable {
  cursor: pointer;
}

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

响应式设计调整

针对不同屏幕尺寸调整样式:

@media (max-width: 768px) {
  .group-box fieldset {
    padding: 8px 10px;
  }

  .group-box-legend {
    font-size: 12px;
  }
}

这些实现方案提供了从基础到高级的 GroupBox 样式实现,可以根据项目需求选择合适的方案或进行组合使用。

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

相关文章

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起:…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例: &…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show…