Skip to content

n-grid 宫格 ​

配合 n-grid-item 等分排列同类入口或内容。列数、边框、间距、圆角与末行对齐可动态修改;图标、文字、图片和徽标均通过成员的默认插槽组合。

平台兼容性 ​

支持 App、Web、微信小程序。正方形按每个成员实际宽度测量,不以屏幕宽度代替容器宽度。

API ​

属性 ​

参数 说明 类型 默认值
columns 每行列数,取正整数,非法值按 1 处理 Number 3
border 显示格子边框 Boolean true
border-color 边框颜色,空串取主题边框色 String ""
square 内容区域为正方形,关闭后自适应高度 Boolean true
align 末行 left / center / right / between 对齐 String "left"
gutter 横纵间距 px,边缘留半间距 Number 0
background 格子背景色,空串取主题表面色 String ""
radius 圆角 px,-1 跟随令牌;连续边框时为直角 Number -1
empty-elements 末尾占位数,最大 columns - 1;末行项数加占位数不得超过列数 Number 0
custom-class 根节点类,需定义在组件样式表内 String ""
custom-style 根节点行内样式 String ""

事件 ​

事件名 说明 回调参数
click 点击成员时触发,与该成员的 click 同参同发;空白区域不触发 NGridClickDetail:

插槽 ​

插槽名 说明
default 放置 n-grid-item,可用 v-for 循环

方法 ​

refresh():容器在隐藏后显示、祖先宽度异步变化时,通过组件 ref 调用,重新测量各成员。窗口尺寸、columns、gutter、square 和 custom-style 改变会自动重测。

实现说明 ​

机制 参考做法 本库做法与分歧理由
容器与成员 等分列容器搭配内容插槽成员 保留双组件,provide/inject 下发响应式配置,嵌套宫格取最近的容器
列数 col / columns,百分比宽度,自动换行 统一 columns,百分比列宽,不做减 1px 的舍入补偿
方形与高度 测容器宽后下发格子高度,可关闭方形 每个成员测内容节点实际宽度后设同值高度,支持窄容器、单项自定义宽度与根内边距覆盖,不依赖屏宽或预估内边距
末行排布 align 或 between,部分平台补空格 align 统一四种对齐,empty-elements 全端补透明占位,保持列位
边框 容器上/左线,成员下/右线,伪元素或原生边框 无间距时每格四边常驻细线以边界为中心,相邻格子共用同一位置的线,空白处不画线,末行任意对齐均闭合;有间距时各成员使用带圆角的独立原生边框
背景与圆角 容器可配置背景/圆角,成员可覆盖背景 容器下发格子背景/圆角,单项背景优先;连续边框保持直角避免交点缺口
间距 gutter 或格子内边距 成员根节点四边半间距,横纵同值,不依赖 CSS gap
点击 父子点击通知,回传 name 或 index 统一 { index, name },name 未设置时用 index;成员阻断原生冒泡并调用父通道,避免重复派发
按压 成员 highlight 或默认按压态 保留 highlight,用原生 hover-class 透明度反馈,不拦截插槽内输入控件的触摸
内容扩展 插槽组合图标、文字、徽标,与 swiper 配合 保留自由内容与原生 swiper 组合,不在宫格内增加图标或分页引擎
动态结构 子项更新与末尾占位更新 容器、成员与内容宿主保持稳定,占位格和边线常驻并用 v-show 控制;切换布局配置保留插槽状态,业务成员增删按调用方的稳定 key 更新

定制优先使用 --n-grid-radius、--n-grid-border-width、--n-grid-min-height、--n-grid-pressed-opacity;颜色跟随 --n-bg-1、--n-border。局部内容用成员 content-style。连续边框只描绘实际成员,占位及末行空白不画线;边线向格子边界两侧各伸出半个线宽,宿主需要显式允许 overflow。

正方形会固定内容高度,较长内容应关闭 square。初次挂载或隐藏状态测得宽度为 0 时保留自然高度,显示后调用 refresh();没有定时轮询。单项脱离 n-grid 使用会显式报错。

开发验证 ​

在组件库目录运行 node scripts/test-grid.cjs <HBuilderX plugins 目录>,使用 HBuilderX 自带的 Vue 编译器与运行时执行实际组件,验证点击、插槽状态保留、成员增删与异步测量。该脚本不替代原生设备上的绘制及输入焦点验收。

记录 · 思考 · 创作