拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ng-zorro-antd Button 按钮尺寸完全指南:从 nzSize 三档尺寸到源码级原理

UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载导读本文围绕 ng-zorro-antdAngular 版本的 Ant Design 组件库中Button 按钮的尺寸体系展开核心主题是nzSize属性如何将按钮在大large、中default、小small三档尺寸之间切换。你将学会在模板中为button与a设置尺寸、配合图标按钮与紧凑组合nz-space-compact使用的完整写法并通过源码理解尺寸如何映射为 CSS 类、如何受全局配置与表单上下文影响。一、三档尺寸large/default/small1.1 核心规则按钮有大、中、小三种尺寸通过设置nzSize为large或small分别把按钮设为大、小尺寸。若不设置nzSize则尺寸为中即default。nzSizelarge大尺寸适合作为页面主 CTA、移动端触摸目标等强调场景省略nzSize默认default中尺寸绝大多数业务场景的默认选择nzSizesmall小尺寸适合表格行内操作、紧凑工具栏等空间受限场景。对应的类型定义位于 components/core/types/size.tsexport type NzSizeLDSType large | default | small;而 Button 组件的nzSize输入正是这一类型见 components/button/button.component.tsexport type NzButtonSize NzSizeLDSType; // ... Input() WithConfig() nzSize: NzButtonSize default;注意nzSize默认值为default且带有WithConfig()装饰器意味着它支持通过全局配置NZ_CONFIG统一覆盖详见下文第四节。1.2 基础写法尺寸写法结果大button nz-button nzSizelarge按钮/button大尺寸中button nz-button按钮/button中尺寸默认小button nz-button nzSizesmall按钮/button小尺寸对应官方演示源码位于 components/button/demo/size.ts其核心片段如下readonly size signalNzButtonSize(large);button nz-button [nzSize]size() nzTypeprimaryPrimary/button button nz-button [nzSize]size() nzTypedefaultDefault/button button nz-button [nzSize]size() nzTypedashedDashed/button a nz-button [nzSize]size() nzTypelinkLink/a演示页面用一组nz-radio-group在large/default/small三档间切换实时展示所有按钮类型primary、default、dashed、link随尺寸联动变化的效果。二、尺寸在源码中的落地CSS 类映射与计算链2.1 从nzSize到ant-btn-lg/ant-btn-smnzSize并不会直接控制像素值而是通过 host 绑定把尺寸翻译成 CSS 类由 Less 样式决定最终视觉效果。见 components/button/button.component.ts[class.ant-btn-lg]: finalSize() large, [class.ant-btn-sm]: finalSize() small,当最终尺寸为large时追加ant-btn-lg为small时追加ant-btn-smdefault时两个类都不加保持基础类ant-btn即可。对应的样式定义在 components/button/style/index.less-lg { line-height: btn-height-lg - 2px; } -sm { line-height: btn-height-sm - 2px; }具体的高宽、内边距、字号等尺寸变量由 components/button/style/mixin.less 中的button-sizemixin 统一注入-lg { .button-size(btn-height-lg; btn-padding-horizontal-lg; btn-font-size-lg; btn-border-radius-base); } -sm { .button-size(btn-height-sm; btn-padding-horizontal-sm; btn-font-size-sm; btn-border-radius-sm); }这些btn-height-lg、btn-height-sm等 Less 变量来自组件库的全局主题变量体系因此按钮尺寸可以随主题定制如紧凑主题ng-zorro-antd.compact.less、暗色主题ng-zorro-antd.dark.less、变量主题ng-zorro-antd.variable.less联动变化。2.2 测试用例验证尺寸类名的映射行为有明确的单元测试保障见 components/button/button.spec.tsit(should apply classname based on nzSize, () { component.nzSize.set(large); fixture.detectChanges(); expect(buttonElement.classList).toContain(ant-btn-lg); component.nzSize.set(small); fixture.detectChanges(); expect(buttonElement.classList).toContain(ant-btn-sm); component.nzSize.set(default); fixture.detectChanges(); expect(buttonElement.className).toBe(ant-btn); });该用例确认了三件事large→ 追加ant-btn-lgsmall→ 追加ant-btn-smdefault→ 不追加任何尺寸类。2.3finalSize()尺寸的最终裁决组件内部并不是直接读取nzSize而是通过一个computed信号finalSize()计算最终生效的尺寸其优先级如下见 components/button/button.component.tsprotected readonly finalSize computed(() { if (this.formSize?.()) { return this.formSize(); } if (this.compactSize) { return this.compactSize(); } return this.size(); });表单上下文NZ_FORM_SIZE优先级最高当按钮处于nz-form-control中且表单配置了尺寸时按钮尺寸会跟随表单尺寸紧凑组合NZ_SPACE_COMPACT_SIZE次之按钮位于nz-space-compact内且该组合设置了尺寸时跟随组合尺寸自身nzSize兜底以上两种情况都不存在时才使用按钮自身设置的尺寸。从源码结构可以推断这是 ng-zorro-antd 组件库尺寸联动设计的一部分表格、表单、紧凑工具栏中的按钮无需逐个设置即可保持视觉一致。三、图标按钮与紧凑组合中的尺寸表现3.1 纯图标按钮的尺寸尺寸对纯图标按钮同样生效官方演示中涵盖了四种形态见 components/button/demo/size.tsbutton nz-button nzTypeprimary [nzSize]size() nz-icon nzTypedownload / /button button nz-button nzTypeprimary [nzSize]size() nzShapecircle nz-icon nzTypedownload / /button button nz-button nzTypeprimary [nzSize]size() nzShaperound nz-icon nzTypedownload / /button button nz-button nzTypeprimary [nzSize]size() nz-icon nzTypedownload / Download /button不带文字、仅含一个nz-icon的按钮会呈现为图标按钮组件通过iconOnly计算并追加ant-btn-icon-only类nzShapecircle圆形图标按钮与nzShaperound圆角图标按钮的尺寸同样跟随nzSize圆形与方形图标按钮在 large / small 下的直径与图标字号由 components/button/style/mixin.less 的-lg/-sm规则分别处理。3.2 紧凑组合 nz-space-compact 的尺寸联动官方演示还展示了nz-space-compact组合按钮如Backward / Forward分步操作条在nzSize下的表现nz-space-compact [nzSize]size() button nz-button nzTypeprimary nz-icon nzTypeleft / Backward /button button nz-button nzTypeprimary Forward nz-icon nzTyperight / /button /nz-space-compactnz-space-compact通过NZ_SPACE_COMPACT_SIZE注入器向其内部子组件广播尺寸见 components/space/space-compact.component.tsreadonly nzSize inputNzSizeLDSType(default); protected readonly finalSize computed(() this.formSize?.() || this.nzSize());按钮组件通过hostDirectives: [NzSpaceCompactItemDirective]与providers声明自己属于紧凑组合的按钮项NZ_SPACE_COMPACT_ITEM_TYPE值为btn从而接收组合级尺寸。这也解释了finalSize()中compactSize的优先级逻辑。nz-space-compact的nzSize支持large | small | default三档见 components/space/doc/index.en-US.md。四、全局配置让尺寸成为站点级统一约束nzSize带有WithConfig()标记components/button/button.component.ts因此可以通过NZ_CONFIG全局配置统一指定所有 Button 的默认尺寸而不必在每个按钮上重复书写。组件构造函数中注册了配置变更监听见 components/button/button.component.tsonConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME, () { this.size.set(this.nzSize); this.cdr.markForCheck(); });也就是说运行时修改全局button.nzSize配置已渲染的按钮也会随之刷新尺寸。这在站点级换肤、统一收紧/放大按钮密度的场景下非常实用。五、实用建议与注意事项省略即默认不需要中尺寸时无需显式写nzSizedefault省略即可但若你的模板中已有动态绑定的[nzSize]注意空值会回落为组件默认值default。尺寸优先级记忆按钮自身nzSize 紧凑组合nz-space-compact的nzSize 表单nz-form-control上下文尺寸。若发现按钮尺寸不听话先检查它是否处于上述容器中。配合全局配置做站点级控制如需统一调整所有按钮尺寸优先通过NZ_CONFIG的button.nzSize配置而不是逐个修改模板。尺寸与形状正交组合nzSizelarge/default/small与nzShapecircle/round、nzTypeprimary/default/dashed/link/text、nzBlock、nzLoading、nzDanger等属性相互独立、自由组合API 全表见 components/button/doc/index.en-US.md。验证入口行为级验证可直接运行 components/button/button.spec.ts 中的should apply classname based on nzSize用例视觉层验证可运行官方演示 components/button/demo/size.ts在large / default / small三档间切换观察所有按钮形态。六、快速参考场景推荐写法页面主操作大button nz-button nzSizelarge nzTypeprimary提交/button常规操作中默认button nz-button nzTypeprimary提交/button表格行内操作小button nz-button nzSizesmall编辑/button组合操作条联动nz-space-compact [nzSize]small.../nz-space-compact站点级统一NZ_CONFIG中设置button: { nzSize: middle 风格值 }合法值为large \| default \| small说明ng-zorro-antd 的尺寸类型统一由 components/core/types/size.ts 的NzSizeLDSType定义除 Button 外其他组件如 components/space/space-compact.component.ts、表单等复用同一套尺寸语义理解本文的优先级规则即可触类旁通。赞分享UI组件前端【免费下载链接】ng-zorro-antdAngular UI Component Library based on Ant Design项目地址https://gitcode.com/gh_mirrors/ng/ng-zorro-antd点击查看免费下载相关推荐30分钟打造专属精简Windows 11tiny11builder终极指南30分钟打造专属精简Windows 11tiny11builder终极指南 还在为Windows 11庞大的系统体积而烦恼吗老旧电脑无法满足微软官方硬件要求UI组件前端ant-design Button 按钮尺寸完全指南large / default / small 三档尺寸的用法与底层实现ant design Button 按钮尺寸完全指南large / default / small 三档尺寸的用法与底层实现 ant design 的 ButUI组件前端设计系统Ant Design Button 按钮尺寸完全指南size 属性的 large、middle、small 三档使用与源码原理Ant Design Button 按钮尺寸完全指南size 属性的 large、middle、small 三档使用与源码原理 Ant Design 的 Bu前端UI组件设计系统上一篇推荐文章探索 iui——轻量级且跨平台的Rust UI工具包下一篇Hippy 3.0 Demo 实战从零配置环境到编译运行三端 Demo 并修改前端工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门