首先看模板部分,组件包含一个外层的view,类名为group。内部有一个group-title的view,当title存在时显示prop.title。然后是group-body的view,根据prop的inset和border属性添加不同的类名,用于控制样式。
<view class="group">
<view class="group-title" v-if="title">{{prop.title}}</view>
<view :class="{'group-body':true, 'group-inset':prop.inset,'group-border':prop.border}">
<slot></slot>
</view>
</view>
接下来是脚本部分,使用TypeScript和setup语法。定义了一个类型types,包含可选的title(字符串)、inset(布尔值)、border(布尔值)。然后通过defineProps声明了这些属性。
// type
type types = {
title ?: string,
inset ?: boolean,
border?:boolean
}
// prop
const prop = defineProps<types>()
样式部分使用SCSS,scoped。定义了group的各种子类,如group-body、group-border、group-title、group-inset,分别控制不同的样式,比如背景色、边框、圆角等。
.group {
&-body{
overflow: hidden;
background: #f1f1f1;
display:grid;
}
&-border {
gap:1px;
border:solid 1px #f1f1f1;
}
&-title {
padding:8px 10px;
line-height: normal;
padding-top: 0;
color: #666;
font-size: 14px;
}
&-inset {
background: #eee;
display: flex;
flex-direction: column;
border-radius: 5px;
overflow: hidden;
margin: 0 10px;
}
}
现在需要将这些信息整理成Markdown文档,包括组件描述、属性说明、样式说明等部分。需要确保文档清晰,用户能快速了解组件的使用方法和效果。
首先,组件名称是h-group,属于uni-app的自定义组件。功能是用于内容分组,支持标题显示、圆角卡片风格(inset)和外边框(border)。
属性部分,title是可选的字符串,用于显示分组标题;inset是可选的布尔值,为true时应用圆角卡片样式;border是可选的布尔值,为true时显示外边框。
样式部分需要说明各个类名对应的样式效果,比如group-body的背景色、布局方式,group-inset的圆角和边距,group-border的边框和间隔等。
最后,可能需要提供使用示例,展示如何在模板中使用该组件,并传递不同的属性。
现在将这些内容组织成结构化的Markdown文档,确保信息准确,易于理解。
h-group 分组组件文档
组件概述
h-group 是一个用于内容分组展示的 uni-app 自定义组件,支持标题显示、圆角卡片风格(inset)和外边框(border)等特性,适用于列表项分组、信息区块划分等场景。
组件属性
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title | string | - | 分组标题(可选) |
| inset | boolean | false | 是否展示为圆角卡片风格 |
| border | boolean | false | 是否显示外边框 |
样式说明
组件通过 SCSS 定义了以下核心样式类(作用域内生效):
外层容器 .group
- 包裹整个分组内容,无直接样式,主要作为子元素的容器。
标题区域 .group-title
- 仅当
title属性存在时显示。 - 样式:内边距
padding: 8px 10px(顶部内边距padding-top: 0),字体颜色#666,字号14px,行高normal。
内容区域 .group-body
- 基础样式:背景色
#f1f1f1,溢出隐藏overflow: hidden,布局方式display: grid。 - 扩展类
.group-inset(当inset=true时生效):背景色#eee,弹性列布局display: flex; flex-direction: column,圆角border-radius: 5px,左右边距margin: 0 10px。 - 扩展类
.group-border(当border=true时生效):元素间隔gap: 1px,外边框border: solid 1px #f1f1f1。
使用示例
<!-- 基础使用(带标题、外边框) -->
<h-group :title="'用户信息'" :border="true">
<view>姓名:张三</view>
<view>年龄:25</view>
</h-group>
<!-- 圆角卡片风格 -->
<h-group :inset="true">
<view>地址:北京市朝阳区</view>
<view>联系方式:138-XXXX-XXXX</view>
</h-group>
注意事项
-
标题
title为可选属性,不传递时标题区域不会渲染。 -
inset和border可同时生效,但需注意样式叠加效果(如同时设置时,group-inset的圆角可能与group-border的边框配合使用)。