尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

ng-zorro-antd Flex 弹性布局组件:nz-flex 指令完整使用指南

发布时间:2026/9/26 7:38:35

资讯中心
01
ARTICLE

ng-zorro-antd Flex 弹性布局组件:nz-flex 指令完整使用指南

ng-zorro-antd Flex 弹性布局组件:nz-flex 指令完整使用指南
UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载Flex弹性布局是 ng-zorro-antd 提供的布局类指令组件自17.1.0版本引入见 doc 元数据用于以块级元素的方式为容器内的子元素设置间距与各种水平、垂直对齐方式。本文基于官方文档与仓库源码完整讲解nz-flex指令的六个核心参数、底层实现原理以及多种实战组合用法。读完本文你将能够在 Angular 应用中零成本地搭建对齐、换行、间隙可控的弹性布局容器并理解它与 Space 组件的适用边界。何时使用需要为块级元素设置元素之间的间距时需要设置各种水平、垂直对齐方式主轴、交叉轴时需要更灵活地控制子元素在垂直或水平方向上的布局时。与 Space 组件的区别文档明确指出两者的适用场景不同维度SpaceFlex服务对象内联元素块级元素包裹层会为每一个子元素添加包裹元素用于内联对齐本身不会添加包裹元素典型场景行、列中多个子元素的等距排列垂直或水平方向上的子元素布局提供更多灵活性与控制能力简而言之若只是「一排按钮等间距排开」Space 足够若需要对主轴/交叉轴对齐、换行策略、间隙大小进行精细控制应选用 Flex。快速上手Flex 以指令形式提供使用前需在模块中引入NzFlexModule见 flex.module.ts 与 public-api.tsimport { NzFlexModule } from ng-zorro-antd/flex; NgModule({ imports: [NzFlexModule] }) export class SomeModule {}指令选择器为[nz-flex], nz-flex因此既可以作为属性指令挂在任意元素上也可以作为nz-flex元素使用同时通过exportAs: nzFlex暴露模板引用见 nz-flex.directive.ts。最基础的用法参考 basic demodiv nz-flex [nzVertical]vertical() div classflex-item/div div classflex-item even/div div classflex-item/div div classflex-item even/div /divAPI 参数详解以下是 index.zh-CN.md 中给出的完整参数表参数说明类型默认值[nzVertical]使用flex-direction: column描述 flex 的垂直方向booleanfalse[nzJustify]设置元素在主轴方向上的对齐方式参照 CSSjustify-contentNzJustifynormal[nzAlign]设置元素在交叉轴方向上的对齐方式参照 CSSalign-itemsNzAlignnormal[nzGap]设置项目的间隙small \| middle \| large \| number \| string0[nzWrap]指定 flex 元素单行显示还是多行显示参照 CSSflex-wrapNzWrapnowrap[nzFlex]flex CSS 简写属性参照 CSSflexNzFlexunset各参数的取值类型在 typings.ts 中以 TypeScript 联合类型精确约束下面逐一展开。nzVertical垂直方向类型为boolean默认false水平方向。当为true时指令会为宿主元素添加ant-flex-vertical类对应样式flex-direction: column见 style/index.less。需要留意的是该输入使用booleanAttribute转换nz-flex.directive.ts因此在模板中直接写div nz-flex nzVertical也会被视为true。nzJustify主轴对齐对应 CSSjustify-content控制元素在主轴方向flex-direction决定的方向上的分布方式。合法取值NzJustify共 12 种flex-start、center、flex-end、space-between、space-around、space-evenly、start、end、right、left、stretch、normal。指令为每种取值生成形如ant-flex-justify-{value}的类名样式表中逐一映射到justify-contentstyle/index.less。其中flex-start/flex-end与start/end的差异在于前者基于书写方向固定为「flex 起始端」后者基于书写模式方向可据此按需选用。nzAlign交叉轴对齐对应 CSSalign-items控制元素在交叉轴方向上的对齐方式。NzAlign与NzJustify的类型定义完全一致12 种取值但样式映射的目标是align-itemsstyle/index.less且部分值如space-between在 align-items 场景下需要谨慎使用。nzGap间隙控制nzGap支持三种预置尺寸、数值与任意字符串。预置值的换算逻辑在指令内部的gapgetter 中实现nz-flex.directive.ts传入值实际生效的 CSS gapsmall8pxmiddle16pxlarge24px数字如8080px自动拼接px字符串如10rem原样透传不做任何转换最终通过[style.gap]宿主绑定写入gap样式属性nz-flex.directive.ts因此它同时作用于主轴与交叉轴两个方向这是比margin方案更简洁的间距实现。nzWrap换行策略对应 CSSflex-wrapNzWrap取值为wrap | nowrap | wrap-reverse默认nowrap。指令分别生成ant-flex-wrap-wrap、ant-flex-wrap-nowrap、ant-flex-wrap-wrap-reverse类并映射到flex-wrapstyle/index.less。当容器宽度不足以容纳全部子元素时通过wrap可让子元素折行显示wrap-reverse则反向折行。nzFlexflex 简写对应 CSSflex简写属性类型NzFlex被定义为模板字符串类型${NzFlexShrink} ${NzFlexGrow} ${NzFlexBasis}或unsettypings.ts即要求按「收缩 增长 基准」三段的顺序书写例如0 0 auto、1 1 100%、0 1 50px。值直接通过[style.flex]绑定写入样式nz-flex.directive.ts。源码实现原理纯类名 内联样式从实现角度看nz-flex指令nz-flex.directive.ts没有使用任何 JavaScript 布局计算而是完全基于「宿主绑定」机制固定添加ant-flex类承载最基础的display: flex样式style/index.lessnzVertical、nzJustify、nzAlign、nzWrap四个输入通过[class.xxx]绑定在取值变化时切换对应语义类名nzGap、nzFlex两个输入通过[style.xxx]直接写入内联样式。这意味着组件的渲染结果对 Angular 变更检测完全响应式信号或普通属性驱动的取值一旦变化类名与内联样式立即更新无需手动操作 DOM。测试用例 flex.spec.ts 对此做了系统验证包括默认值断言方向不含vertical、justify/align 含normal、wrap 含nowrap、gap计算值为0px全取值遍历12 种 justify、7 种 align、3 种 wrap 均能命中对应类名gap 换算断言small→8px、middle→16px、large→24px、数字10~40→{n}px字符串10rem计算后为160pxflex 简写断言0 0 auto、1 1 100%、0 1 50px原样生效1 0 50rem计算后为1 0 800px。这些断言同时印证了各参数的实际行为与文档描述一致。实战示例组合对齐justify align参考 align demo在固定高度容器内同时控制主轴与交叉轴div classbtn-wrappers nz-flex [nzJustify]selectedJustification() [nzAlign]selectedLAlignment() button nz-button nzTypeprimaryPrimary/button button nz-button nzTypeprimaryPrimary/button button nz-button nzTypeprimaryPrimary/button button nz-button nzTypeprimaryPrimary/button /divreadonly justifySegment: NzJustify[] [ flex-start, center, flex-end, space-between, space-around, space-evenly ]; readonly alignSegment: NzAlign[] [flex-start, center, flex-end];容器设置block-size: 10rem后nzAligncenter即实现垂直居中nzJustifyspace-between实现水平两端分布无需任何手写 CSS。间隙与换行动态调整参考 gap demo用nz-segmented切换预置间隙、用nz-slider动态输入自定义数值div nz-flex [nzGap]gap() button nz-button nzTypeprimaryPrimary/button button nz-button nzTypedashedDashed/button button nz-button nzTypedefaultDefault/button button nz-button nzTypelinkLink/button /divreadonly gapSegment [small, middle, large, custom]; readonly selectedGap signal(small); readonly customGapValue signal(0); readonly gap computed(() (this.selectedGap() custom ? this.customGapValue() : this.selectedGap()));换行场景参考 wrap demo给每个按钮固定width: 100px通过nzWrap控制 20 个按钮的折行表现div classbtn-wrapper nz-flex nzGapmiddle [nzWrap]selectedWrap() for (_ of array; track _) { button stylewidth: 100px nz-button nzTypeprimaryButton {{ _ }}/button } /div嵌套组合水平 垂直Flex 容器天然支持嵌套参考 combination demo外层水平布局nzGap80内层垂直布局nzVerticalnzGaplarge轻松实现「图标 标题 描述」的经典卡片排版div classcombination-wrapper nz-flex [nzGap]80 img altAngular width150 height150 src... / div nz-flex [nzVertical]true nzGaplarge h2Ant Design of Angular/h2 h3An enterprise-class Angular UI component library based on Ant Design./h3 /div /div小结nz-flex是 ng-zorro-antd 中轻量而强大的布局指令nzVertical控制方向nzJustify/nzAlign控制主轴与交叉轴对齐nzGap以预置尺寸或任意值控制双向间隙nzWrap管理折行nzFlex直接透传 CSS flex 简写。其实现完全基于语义化类名与内联样式绑定nz-flex.directive.ts配合 style/index.less 与 flex.spec.ts 中的系统测试行为可预期、可组合。当需要比 Space 更精细的块级布局控制时它就是开箱即用的答案。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐ng-zorro-antd Flex 布局指令nz-flex完全指南属性 API、间距与对齐实践ng zorro antd Flex 布局指令nz flex完全指南属性 API、间距与对齐实践 本文围绕 ng zorro antd 的 Flex 组件UI组件前端ng-zorro-antd Flex 组合使用实战通过 nz-flex 嵌套构建复杂布局ng zorro antd Flex 组合使用实战通过 nz flex 嵌套构建复杂布局 在 ng zorro antd 中 nz flex 是一个基于 FUI组件前端ng-zorro-antd Flex 弹性布局组件入门基本布局用法与源码实现解析ng zorro antd Flex 弹性布局组件入门基本布局用法与源码实现解析 ng zorro antd 的 Flex 组件 nz flex 是一个用UI组件前端上一篇repo-automation-bots实战案例大型开源项目的自动化管理经验分享下一篇Label Studio微服务改造从单体应用到分布式架构创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。