
前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载本指南围绕 Ant Design Blazor 组件库中的Descriptions描述列表组件展开。该组件用于成组显示多个只读字段是详情页信息展示的标准解决方案。阅读本文后你将掌握 Descriptions 与 DescriptionsItem 的全部公开 API 参数含默认值与取值、水平/垂直两种布局、带边框样式、尺寸调节、跨列 Span 合并、按断点响应式列数配置以及基于 LabelStyle/ContentStyle 的单元格级自定义样式等实战能力并能从源码层面理解其内部的行列矩阵排版机制。组件定位与适用场景Descriptions 的核心用途是以结构化的表格形式成组展示一组只读信息。在 components/descriptions/Descriptions.razor.cs 的组件文档注释中明确写道Display multiple read-only fields in groups.成组显示多个只读字段Commonly displayed on the details page.常见于详情页的信息展示因此它最适合的场景是详情页——例如订单详情、用户信息、商品规格、资源概览等需要把字段名 → 字段值成组罗列出来的页面。它不用于表单输入那是 Form/FormItem 的职责而是纯粹的展示型组件天然具备可读性强、信息密度高、视觉整齐的特点。组件 API 全景Descriptions 组件由两部分组成外层容器Descriptions与内层条目DescriptionsItem。Descriptions 容器参数以下是 Descriptions.razor.cs 中定义的公开参数参数类型默认值说明Borderedboolfalse是否显示边框与背景颜色LayoutDescriptionsLayoutDescriptionsLayout.Horizontal布局方式水平label 与 content 同一行或垂直label 在上、content 在下ColumnOneOfint, Dictionarystring, int见下文说明每行显示的条目数。可传数字也可传{ Xs: 8, Sm: 16, Md: 24 }形式的断点映射SizeDescriptionsSize无默认未指定列表尺寸Default、Middle、SmallTitlestringnull列表顶部的标题文字TitleTemplateRenderFragmentnull列表顶部的标题模板优先级高于TitleColonboolfalse是否在 label 后显示冒号会作为 DescriptionsItem 的默认值下传ChildContentRenderFragment-列表内容通常包含若干DescriptionsItem关于Column的默认行为源码 Descriptions.razor.cs 中定义了内置默认断点映射Xxl: 3, Xl: 3, Lg: 3, Md: 3, Sm: 2, Xs: 1也就是说在宽屏下默认每行 3 项小屏Sm下每行 2 项极小屏Xs下每行 1 项。当你显式传入Column的断点字典时某个断点的值若缺失则会回退到上述默认值见 SetRealColumn 方法。DescriptionsItem 条目参数每个条目由 DescriptionsItem.razor.cs 定义参数类型默认值说明Titlestringstring.Empty条目标题字段名TitleTemplateRenderFragmentnull条目标题模板优先级高于TitleSpanint1条目横跨的列数类似表格的 colspanChildContentRenderFragment-条目的内容字段值LabelStylestringnull自定义 label标题单元格的 CSS 样式ContentStylestringnull自定义 content内容单元格的 CSS 样式所有条目参数通过IDescriptionsItem接口见 IDescriptionsItem.cs统一定义条目实例由Descriptions通过级联参数CascadingParameter收集管理注册/注销逻辑见 DescriptionsItem.razor.cs。枚举定义两个核心枚举定义于组件目录下DescriptionsLayout.csHorizontal、Vertical两个取值DescriptionsSize.csDefault、Middle、Small三个取值。基本用法最简单的只读信息展示最基础的写法是直接嵌套DescriptionsItem完整示例见 Basic.razorDescriptions TitleUser Info DescriptionsItem TitleUserNameZhou Maomao/DescriptionsItem DescriptionsItem TitleTelephone18100000000/DescriptionsItem DescriptionsItem TitleLiveHangzhou, Zhejiang/DescriptionsItem DescriptionsItem TitleRemarkEmpty/DescriptionsItem DescriptionsItem TitleAddress No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China /DescriptionsItem /Descriptions要点说明DescriptionsItem的开闭标签之间的内容就是该字段的值与Title属性的字段名一一对应Title属性传入的是普通字符串内容区也可包含任意 Razor 标记如br /、其他 Ant Design 组件等因为它们本质上是ChildContent渲染片段未设置Bordered时列表以无边框的紧凑样式展示每行条目在水平布局下按标签 内容并排排列。带边框样式Bordered 详解通过Bordered属性可以切换为带边框和背景颜色的列表示例见 Border.razorDescriptions TitleUser Info Bordered DescriptionsItem TitleProductCloud Database/DescriptionsItem DescriptionsItem TitleBilling ModePrepaid/DescriptionsItem DescriptionsItem TitleAutomatic RenewalYES/DescriptionsItem DescriptionsItem TitleOrder Time 2018-04-24 18:00:00 /DescriptionsItem DescriptionsItem TitleUsage Time Span2 2018-04-24 18:00:00 To 2019-04-24 18:00:00 /DescriptionsItem DescriptionsItem TitleStatus Span3 Badge StatusBadgeStatus.Processing TextRunning/Badge /DescriptionsItem DescriptionsItem TitleNegotiated Amount$80.00/DescriptionsItem DescriptionsItem TitleDiscount$20.00/DescriptionsItem DescriptionsItem TitleOfficial Receipts$60.00/DescriptionsItem DescriptionsItem TitleConfig Info Data disk type: MongoDB br / Database version: 3.4 br / Package: dds.mongo.mid br / Storage space: 10 GB br / Replication_factor:3 br / Region: East China 1br / /DescriptionsItem /Descriptions边框样式的底层实现可以追溯到 style/index.less.ant-descriptions-bordered类会让视图容器加上1px的border-color-split边框、单元格加上内边距与右侧分割线并为label 单元格设置背景色descriptions-bg从而形成标签灰底、内容白底的经典详情页效果。注意带边框时内容区可以继续使用Span实现跨列例如上例中 Usage Time 跨 2 列、Status 跨满整行 3 列。同时Bordered 形态还支持在内容中自由嵌套其他组件如示例中的Badge这正是ChildContent作为渲染片段带来的灵活性。垂直布局Layout 属性LayoutDescriptionsLayout.Vertical将排列方向改为标签在上、内容在下的纵向结构示例见 Vertical.razorDescriptions TitleUser Info LayoutDescriptionsLayout.Vertical DescriptionsItem TitleUserNameZhou Maomao/DescriptionsItem DescriptionsItem TitleTelephone18100000000/DescriptionsItem DescriptionsItem TitleLiveHangzhou, Zhejiang/DescriptionsItem DescriptionsItem TitleAddress Span2 No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China /DescriptionsItem DescriptionsItem TitleRemarkEmpty/DescriptionsItem /Descriptions垂直布局同样可以叠加Bordered得到垂直 带边框的组合效果示例见 VerticalBorder.razor结构与上面的 Border 示例一致仅增加了LayoutDescriptionsLayout.Vertical。从渲染源码 Descriptions.razor 可以看到垂直布局与水平布局走的是完全不同的表格结构垂直模式下 label 与 content 被拆分成两个独立的tr行先渲染一整行标签再渲染一整行内容而水平模式Descriptions.razor则在同一个td内用ant-descriptions-item-container包裹 label 与 content 并排显示。自定义尺寸Size 属性Size属性支持DescriptionsSize.Default/Middle/Small三种尺寸示例见 CustomSize.razorRadioGroup bind-Valuesize Radio ValueDescriptionsSize.Defaultdefault/Radio Radio ValueDescriptionsSize.Middlemiddle/Radio Radio ValueDescriptionsSize.Smallsmall/Radio /RadioGroup br / br / Descriptions TitleCustom Size Bordered Sizesize DescriptionsItem TitleProduct Cloud Database /DescriptionsItem DescriptionsItem TitleBillingPrepaid/DescriptionsItem DescriptionsItem Titletime18:00:00/DescriptionsItem DescriptionsItem TitleAmount$80.00/DescriptionsItem DescriptionsItem TitleDiscount$20.00/DescriptionsItem DescriptionsItem TitleOfficial$60.00/DescriptionsItem DescriptionsItem TitleConfig Info Data disk type: MongoDB br / Database version: 3.4 br / Package: dds.mongo.mid br / Storage space: 10 GB br / Replication_factor:3 br / Region: East China 1 br / /DescriptionsItem /Descriptions code{ private DescriptionsSize size DescriptionsSize.Default; }尺寸对样式的影响同样可以在 style/index.less 与 style/index.less 中找到依据Middle使用padding-sm行距与descriptions-middle-padding单元格内边距Small使用padding-xs与descriptions-small-padding从而让列表适配不同密度的容器。响应式配置Column 断点映射Column可以接收Dictionarystring, int按屏幕断点动态决定每行列数从而实现在小屏幕设备上的完美呈现示例见 Responsive.razorDescriptions TitleResponsive Descriptions Bordered Columncolumn DescriptionsItem TitleProduct Cloud Database /DescriptionsItem DescriptionsItem TitleBillingPrepaid/DescriptionsItem DescriptionsItem Titletime18:00:00/DescriptionsItem DescriptionsItem TitleAmount$80.00/DescriptionsItem DescriptionsItem TitleDiscount$20.00/DescriptionsItem DescriptionsItem TitleOfficial$60.00/DescriptionsItem DescriptionsItem TitleConfig Info Data disk type: MongoDB br / Database version: 3.4 br / Package: dds.mongo.mid br / Storage space: 10 GB br / Replication_factor:3 br / Region: East China 1 br / /DescriptionsItem /Descriptions code{ private Dictionarystring, int column new Dictionarystring, int { { Xxl, 3 }, { Xl, 3 }, { Lg, 2 }, { Md, 2 }, { Sm, 1 }, { Xs, 1 } }; }响应式的判定逻辑在 Descriptions.razor.cs 与 SetRealColumn 方法 中实现核心过程如下组件通过JSInteropConstants.GetDomInfo获取自身 DOM 的ClientWidth依据 断点映射表575px 以下为 Xs、576~767px 为 Sm、768~991px 为 Md、992~1199px 为 Lg、1200~1599px 为 Xl、1600px 以上为 Xxl匹配当前视口对应的断点在传入的Column字典中查找该断点的列数若未配置回退到_defaultColumnMap的默认值初次渲染完成后以及浏览器窗口resize事件触发时都会重新计算列数OnAfterRender 中注册了 resize 监听OnResize 中刷新列数与矩阵。因此响应式列数配置是按容器实际宽度实时重排的而不是简单的 CSS 断点这一点非常适合嵌入在多种宽度布局中的场景。跨列合并Span 实战Span是 DescriptionsItem 上的跨列参数默认值为1与表格的colspan语义一致。源码中通过PrepareMatrix方法Descriptions.razor.cs把全部条目按行累加宽度并切分成行矩阵当累计宽度达到或超过_realColumn当前实际列数时当前行立即封板flush并开启新行最后一行的剩余条目会自动补足剩余跨度每个条目会换算出一个realSpan真实渲染跨度例如某行剩余 1 列而条目Span3时realSpan会被裁剪为 1防止溢出。在带边框的水平布局下渲染时 label 与 content 分别占据1列与realSpan * 2 - 1列见 Descriptions.razor因为带边框模式下每个条目被拆成标签格 内容格两个单元格。典型用法可参考上面 Border 示例中的Usage TimeSpan2与StatusSpan3 占满一行。单元格级自定义样式LabelStyle 与 ContentStyleLabelStyle与ContentStyle允许为每一个条目单独设置标签格与内容格的 CSS 样式示例见 CustomStyle.razorDescriptions TitleUser Info DescriptionsItem TitleUserName LabelStylecolor: red; ContentStylefont-weight: bold;Zhou Maomao/DescriptionsItem DescriptionsItem TitleAddress ContentStylefont-weight: bold; No. 18, Wantang Road, Xihu District, Hangzhou, Zhejiang, China /DescriptionsItem /Descriptions在渲染层LabelStyle被直接注入到标签span的style属性上ContentStyle注入到内容span的style属性上见 Descriptions.razor 与 Descriptions.razor两者是逐条目独立生效的适合做重点字段高亮、错误状态标红、金额加粗等细粒度视觉定制。高级细节TitleTemplate、Colon 与冒号渲染除文档 Demo 覆盖的场景外组件还提供两个值得了解的细节能力TitleTemplate标题模板Descriptions与DescriptionsItem都支持以RenderFragment形式自定义标题内容且模板的优先级高于字符串Title。这在需要标题中嵌入图标、徽标或按钮时非常实用见 Descriptions.razor.cs 与 DescriptionsItem.razor.cs 的参数定义。Colon冒号设置后会在 label 后渲染冒号。样式层面对应 index.less 中ant-descriptions-item-label::after伪元素的content规则——默认输出:可通过主题变量descriptions-item-trailing-colon关闭同时.ant-descriptions-item-no-colon与.ant-descriptions-item-no-label类可以进一步控制单个条目的冒号与标签行为。从源码理解整体工作流综合以上内容可以总结出 Descriptions 组件的一条完整工作链路收集条目DescriptionsItem通过级联参数把自己注册进父容器Descriptions.ItemsDescriptionsItem.razor.cs并在销毁时移除自己同文件Dispose方法计算列数OnFirstAfterRenderAsync与OnResize中调用SetRealColumn依据传入的Column数字或断点字典得出_realColumnDescriptions.razor.cs生成行矩阵PrepareMatrix按Span与_realColumn把条目切成_itemMatrix行 × 列结构渲染表格Descriptions.razor依据LayoutHorizontal/Vertical与Bordered的组合将矩阵渲染成四种不同结构的table布局样式兜底SetClassMapDescriptions.razor.cs根据Bordered、Size等参数为根元素挂载ant-descriptions-bordered、ant-descriptions-middle、ant-descriptions-small等 CSS 类配合 style 目录 下的 Less 样式完成最终视觉呈现。结语Descriptions 是 Ant Design Blazor 中小而全的典型组件API 简单8 个容器参数 6 个条目参数却能覆盖详情页几乎所有的信息展示需求——基础罗列、边框强调、垂直排布、尺寸适配、跨列合并、断点响应式、单元格级样式定制一应俱全。配合源码中的PrepareMatrix行矩阵算法与断点映射表你既可以快速上手写页面也能在需要深度定制时准确找到扩展点。想实际体验与继续探索可参考仓库中的官方示例目录 Descriptions Demo包含 Basic、Border、Vertical、VerticalBorder、CustomSize、Responsive、CustomStyle 七个完整可运行示例以及组件实现源码 Descriptions.razor.cs 与 DescriptionsItem.razor.cs。赞分享前端UI组件设计系统【免费下载链接】ant-design-blazor基于 Ant Design 与 Blazor 的前端组件库。让开发者解放生产力实现更大价值。项目地址https://gitcode.com/ant-design-blazor/ant-design-blazor点击查看免费下载相关推荐把百度网盘下载速度拉满BaiduPCS-Go 配置诊断与提速调优完整指南把百度网盘下载速度拉满BaiduPCS Go 配置诊断与提速调优完整指南 BaiduPCS Go 是一个百度网盘命令行客户端支持下载、上传、转存、容量管理等UI组件前端Ant Design Blazor Descriptions 自定义尺寸详解让描述列表适应任意容器Ant Design Blazor Descriptions 自定义尺寸详解让描述列表适应任意容器 导读 本文聚焦 Ant Design Blazor 组件库前端UI组件设计系统Ant Design Blazor Descriptions 描述列表响应式配置详解Column 断点字典与源码实现Ant Design Blazor Descriptions 描述列表响应式配置详解Column 断点字典与源码实现 响应式配置Responsive是 A前端UI组件设计系统上一篇Extended WPF Toolkit架构深度解析企业级WPF控件库的完整解决方案下一篇ReadCat如何打造你的终极免费开源小说阅读体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考