当前位置:首页 > VUE

vue实现groupbox样式

2026-03-29 09:22:21VUE

实现 GroupBox 样式的 Vue 组件

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

基础 GroupBox 组件

创建 GroupBox.vue 文件:

<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 传递样式参数实现更灵活的定制:

<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>

响应式设计调整

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

vue实现groupbox样式

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

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

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

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

相关文章

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue 实现搜索

vue 实现搜索

实现 Vue 搜索功能 在 Vue 中实现搜索功能通常涉及以下几个关键步骤: 数据绑定与输入监听 使用 v-model 双向绑定搜索输入框的值,监听用户输入: <template>…

vue实现gps

vue实现gps

Vue 中实现 GPS 定位功能 在 Vue 中实现 GPS 定位功能通常依赖于浏览器的 Geolocation API 或第三方地图服务(如高德、百度地图等)。以下是两种常见的实现方式: 使用浏览…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…