Skip to content

Grid 宫格

宫格可以在水平方向上把页面分隔成等宽度的区块,用于展示内容或进行页面导航。

组件类型

基础用法

基础用法需要通过 icon 指定图标名称以及 text 属性指定文字。默认显示为一行。

html
<wd-grid clickable>
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

内容插槽

通过 wd-grid-item 的默认插槽可以自定义宫格内容。

html
<wd-grid>
  <wd-grid-item>
    <image class="img" :src="joy" />
  </wd-grid-item>
  <wd-grid-item>
    <image class="img" :src="joy" />
  </wd-grid-item>
  <wd-grid-item>
    <image class="img" :src="joy" />
  </wd-grid-item>
</wd-grid>
scss
.img {
  width: 100%;
  height: 90px;
}

组件变体

自定义列数

通过 column 属性可以自定义宫格列数。未定义该属性时,默认显示为一行。

html
<wd-grid :column="3">
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

正方形格子

通过 square 属性开启正方形格属性。此时每一个 GridItem 宽高相等。

注意:开启 square 后,不建议再通过样式自定义 GridItem 的高度。

html
<wd-grid square :column="4" border :gutter="10">
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

组件样式

自定义背景颜色

通过 bg-color 属性可以自定义宫格背景颜色。

html
<wd-grid bg-color="rgba(0, 0, 0, 0.02)">
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

开启边框

通过 border 属性可以开启边框线展示。

html
<wd-grid border :column="3">
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

设定格间隙

通过 gutter 属性设置格子之间的距离。

html
<wd-grid :gutter="10" :column="4">
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
  <wd-grid-item icon="image" text="文字" />
</wd-grid>

提示信息

设置 is-dot 属性后,会在图标右上角展示一个小红点。也可通过 valuemax 设置徽标显示内容。

html
<wd-grid>
  <wd-grid-item is-dot icon="gift" text="文字" />
  <wd-grid-item value="100" :max="99" icon="desktop" text="文字" />
</wd-grid>

布局能力

横向布局

通过 direction 属性可以设置内容的排列方向,默认为 vertical(纵向),可设置为 horizontal(横向)。配合 reverse 属性可以调换图标和文本的位置。

html
<wd-grid direction="horizontal" :column="2">
  <wd-grid-item icon="image" text="图标居左" />
  <wd-grid-item icon="settings" text="设置选项" />
</wd-grid>

<wd-grid direction="horizontal" reverse :column="2" border>
  <wd-grid-item icon="image" text="图标居右" />
  <wd-grid-item icon="settings" text="设置选项" />
</wd-grid>

特殊样式

图标插槽

通过具名插槽 icon 可以自定义图标位的内容。

html
<wd-grid>
  <wd-grid-item text="文字" icon-size="36px">
    <template #icon>
      <image class="slot-img" :src="joy" />
    </template>
  </wd-grid-item>
</wd-grid>

文字插槽

通过具名插槽 text 可以自定义文字位的内容。

html
<wd-grid>
  <wd-grid-item icon="image">
    <template #text>
      <view class="text">自定义文字插槽</view>
    </template>
  </wd-grid-item>
</wd-grid>

自定义样式

通过 custom-class 或外部样式类可以深度定制样式。如果文字过长想单行显示并使用省略号,可以设置 ellipsistrue

html
<wd-grid>
  <wd-grid-item custom-class="custom-item" ellipsis icon="search-line" text="这是自定义样式的宫格项这是自定义样式的宫格项这是自定义样式的宫格项" />
</wd-grid>
scss
:deep(.custom-item) {
  color: #e2231a;
  text-align: left !important;
}

页面导航

通过 clickable 属性开启可点击状态,并通过 urllink-type 属性设置页面跳转。

html
<wd-grid clickable>
  <wd-grid-item link-type="navigateTo" url="/pages/button/Index" icon="edit" text="Navigate to ..." />
</wd-grid>

Grid Attributes

参数说明类型默认值
column列数number-
border是否显示边框booleanfalse
gutter格子之间的间距,默认单位为 pxnumber-
square是否将格子固定为正方形booleanfalse
clickable是否开启格子点击反馈booleanfalse
bg-color背景颜色设置string-
hover-class v1.9.0指定 grid-item 按下去的样式类string'wd-grid-item__content--hover'
center是否将格子内容居中显示booleantrue
direction格子内容排列的方向,可选值为 horizontalverticalstring'vertical'
reverse是否调换图标和文本的位置booleanfalse
icon-size图标大小,默认单位为 pxstring'28px'
custom-class根节点自定义类名string''
custom-style根节点自定义样式string''

GridItem Attributes

参数说明类型默认值
text文字内容string-
ellipsis是否超出隐藏显示省略号booleanfalse
icon图标名称,可选值见 wd-icon 组件string-
icon-color图标颜色string-
icon-prefix图标类名前缀string-
is-dot是否显示图标右上角小红点booleanfalse
value图标右上角徽标显示值string | number-
max图标右上角徽标最大值,超过最大值会显示 {max}+number99
badge-props v0.1.50自定义徽标属性,透传给 Badge 组件BadgeProps-
url点击后跳转的链接地址string-
link-type页面跳转方式,可选值为 navigateToswitchTabreLaunchredirectTostring'navigateTo'
custom-class根节点自定义类名string''
custom-style根节点自定义样式string''

GridItem Events

方法名说明参数
click点击(跳转)事件-

Grid Slot

name说明
default宫格内容

GridItem Slot

name说明
default宫格项默认内容(自定义全部内容)
icon图标位内容
text文本位内容

Grid 外部样式类

类名说明
custom-class根节点样式

GridItem 外部样式类

类名说明
custom-class根节点样式
custom-text文字样式
custom-icon图标样式

主题定制

CSS 变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 全局配置

名称默认值描述
--wot-grid-item-font-size$typography-body-size-extra-large网格项文字字号
--wot-grid-item-line-height$typography-body-line--height-size-extra-large网格项文字行高
--wot-grid-item-bg$filled-oppo网格项背景色
--wot-grid-item-padding$padding-loose $padding-loose网格项内容内边距
--wot-grid-item-hover-bg$feedback-hover网格项悬浮背景色
--wot-grid-item-icon-size$n-32网格项图标尺寸
--wot-grid-item-icon-color$icon-secondary网格项图标颜色
--wot-grid-item-border-width$stroke-main网格项边框宽度
--wot-grid-item-border-color$border-main网格项边框颜色
--wot-grid-item-text-color$text-main网格项文字颜色
--wot-grid-item-text-spacing$spacing-super-tight网格项文字间距

源代码

文档
组件

Released under the MIT License.

Released under the MIT License.