vue实现groupbox样式
使用 Vue 实现 GroupBox 样式
GroupBox 是一种常见的 UI 组件,用于将相关控件分组并显示边框和标题。以下是几种实现方式:
基于 CSS 的实现
通过纯 CSS 和 Vue 模板实现 GroupBox 的基本样式:
<template>
<div class="group-box">
<div class="group-box-title">{{ title }}</div>
<div class="group-box-content">
<slot></slot>
</div>
</div>
</template>
<script>
export default {
props: {
title: {
type: String,
default: 'Group Title'
}
}
}
</script>
<style scoped>
.group-box {
border: 1px solid #ddd;
border-radius: 4px;
margin: 10px;
padding: 10px;
position: relative;
}
.group-box-title {
position: absolute;
top: -10px;
left: 10px;
background: white;
padding: 0 5px;
font-weight: bold;
color: #333;
}
.group-box-content {
padding-top: 10px;
}
</style>
使用第三方库
对于更复杂的 GroupBox 实现,可以考虑使用第三方 UI 库:

-
Element UI 的 Card 组件可以模拟 GroupBox:
<el-card shadow="never"> <div slot="header" class="clearfix"> <span>分组标题</span> </div> <div>内容区域</div> </el-card> -
Bootstrap-Vue 的 Card 组件:

<b-card header="Group Title" header-tag="header"> <template #header> <h6 class="mb-0">Group Title</h6> </template> 内容区域 </b-card>
可折叠 GroupBox
实现可折叠/展开功能的 GroupBox:
<template>
<div class="collapsible-group-box">
<div
class="group-header"
@click="isCollapsed = !isCollapsed"
>
<span>{{ title }}</span>
<span class="toggle-icon">
{{ isCollapsed ? '+' : '-' }}
</span>
</div>
<div
class="group-content"
v-show="!isCollapsed"
>
<slot></slot>
</div>
</div>
</template>
<script>
export default {
props: {
title: String
},
data() {
return {
isCollapsed: false
}
}
}
</script>
<style scoped>
.collapsible-group-box {
border: 1px solid #eee;
border-radius: 4px;
margin: 10px;
}
.group-header {
padding: 8px 15px;
background-color: #f5f5f5;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.group-content {
padding: 15px;
}
.toggle-icon {
font-weight: bold;
}
</style>
带阴影和动画的 GroupBox
增强视觉效果:
<template>
<div class="enhanced-group-box">
<div class="enhanced-title">{{ title }}</div>
<div class="enhanced-content">
<slot></slot>
</div>
</div>
</template>
<style scoped>
.enhanced-group-box {
border: 1px solid #e0e0e0;
border-radius: 6px;
margin: 15px;
padding: 15px;
position: relative;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
transition: all 0.3s ease;
}
.enhanced-group-box:hover {
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.enhanced-title {
position: absolute;
top: -12px;
left: 15px;
background: white;
padding: 0 10px;
font-weight: 600;
color: #2c3e50;
font-size: 14px;
}
.enhanced-content {
padding-top: 10px;
}
</style>
这些实现方式可以根据具体需求进行组合和调整,创建符合项目风格的 GroupBox 组件。






