Ant Design Blazor Splitter 垂直布局实战:SplitterLayout.Vertical 用法与实现原理
UI组件前端【免费下载链接】ant-design-blazorA rich set of enterprise-class UI components based on Ant Design and Blazor.项目地址https://gitcode.com/gh_mirrors/an/ant-design-blazor点击查看免费下载导读本文围绕 ant-design-blazor 仓库中 Splitter 组件的“垂直方向Vertical”示例vertical.md展开讲解如何通过SplitterLayout.Vertical让两个面板上下排列并自由拖拽调整高度同时深入源码剖析其背后的 CSS 布局与 JS 拖拽实现。读完本文你将掌握 Splitter 垂直布局的完整用法、Layout参数与SplitterPanel面板参数的搭配方式并能从实现层面理解垂直拖拽是如何工作的。一、垂直方向 Demo核心内容速览在 site/AntDesign.Docs/Demos/Experimental/Splitter 目录下Splitter 组件共提供四个演示用例其中order: 3的 vertical 演示对应的说明文档 vertical.md 内容如下中文说明使用垂直布局。英文说明Use vertical layout.这是整组演示中专门展示“垂直布局”的示例默认情况下 Splitter 以水平方向左右分栏排列面板而本示例通过设置Layout参数为SplitterLayout.Vertical将两个面板改为上下排列分隔条也由竖条变为可上下拖拽的横条是编写上下分栏页面如上方工具栏 下方内容区、顶部面板 底部面板的起点。二、完整可运行示例代码垂直布局的演示代码位于 Vertical.razor核心片段如下Splitter LayoutSplitterLayout.Vertical Styleheight: 200px; box-shadow:0 0 10px rgba(0, 0, 0, 0.1) SplitterPanel Desc(First) /SplitterPanel SplitterPanel Desc(Second) /SplitterPanel /Splitter要点拆解LayoutSplitterLayout.Vertical是垂直布局的唯一开关。省略该参数时Layout默认取SplitterLayout.Horizontal见 Splitter.razor.cs面板左右排列设置为Vertical后面板上下排列。容器高度必须显式指定。示例中通过Styleheight: 200px固定了 Splitter 容器的高度垂直布局时面板的尺寸分配高度百分比、最小高度等都基于这个容器高度计算同时用box-shadow增强演示的视觉边界感。两个SplitterPanel的顺序即渲染顺序。第一个面板渲染在上方第二个渲染在下方与水平布局中的“左/右”语义对应详见 Splitter.razor 的渲染结构。面板内容使用FlexTitle居中展示文字属于演示自身的样式装饰与 Splitter 核心行为无关实际项目中可替换为任意业务内容。三、Layout 参数与 SplitterLayout 枚举详解Layout参数的类型是 SplitterLayout.cs 中定义的枚举仅有两个取值枚举值布局效果分隔条形态拖拽方向SplitterLayout.Horizontal默认面板左右排列水平方向扩展垂直竖条左右拖拽水平方向调整宽度SplitterLayout.Vertical面板上下排列垂直方向扩展水平横条上下拖拽垂直方向调整高度在 Splitter.razor.cs 的OnInitialized中组件根据Layout值向ClassMapper追加不同的样式类ClassMapper.Add(${_prefixCls}) .If(${_prefixCls}-horizontal, () Layout SplitterLayout.Horizontal) .If(${_prefixCls}-vertical, () Layout SplitterLayout.Vertical);因此垂直布局时容器会获得ant-splitter-vertical类对应样式表 style/index.less 中的.ant-splitter-vertical规则拖拽手柄使用cursor: row-resize上下拖拽光标分隔条区域的宽高样式也随布局方向切换。四、垂直布局的底层实现原理4.1 布局骨架flex 容器的 row/column 切换从 Splitter.razor 的模板看Splitter 渲染为一个div.split-container内部依次渲染“第一个面板 → 分隔条 bar → 第二个面板”。布局方向完全由 flex 主轴方向决定水平布局左右分栏flex-direction: row垂直布局上下分栏flex-direction: column这两条规则分别定义在 style/index.less 的.splitter-orientation-vertical与.splitter-orientation-horizontal类中。值得说明的是这里的orientation命名以分隔条的方向为参照竖条左右分栏对应vertical横条上下分栏对应horizontal与ant-splitter-vertical/horizontal以面板布局方向命名的体系恰好相反阅读源码时需要注意区分。面板本身的尺寸样式由 Splitter.razor.cs 的GetPaneStyle方法生成垂直布局时写入的是min-height/height水平布局时写入min-width/widthinternal string GetPaneStyle(string paneSize, string minPaneSize) { var styleKey Vertical ? width : height; ... }注意这里名为Vertical的私有属性实际判断的是“分隔条是否为竖条”即Layout SplitterLayout.Horizontal见 Splitter.razor.cs从源码结构看这是一个命名上容易引起误解的内部实现细节但最终效果与Layout的公开语义保持一致。4.2 拖拽逻辑JS 侧按方向选择坐标轴Splitter 的拖拽行为由 splitterHelper.ts 实现。组件首次渲染后通过JSInteropConstants.SplitterHelper.Attach见 JSInteropConstants.cs把 DOM 容器和 .NET 引用交给 JS 侧绑定指针事件。垂直布局时JS 侧通过容器上的splitter-orientation-horizontal类判定“横条模式”splitterHelper.ts从而指针位置取ev.clientY即纵向坐标splitterHelper.ts目标尺寸取面板的height高度增量计算后写入两个面板的height样式splitterHelper.ts拖拽过程中实时更新两个面板高度并在pointerup时把最终尺寸数组回传给 .NETsplitterHelper.ts。4.3 尺寸回传与状态同步JS 侧通过component.invokeMethodAsync(UpdateSize, sizes)调用 .NET 侧的 UpdateSize 方法标有[JSInvokable]将最新尺寸写入两个SplitterPanel的Size属性并在绑定了OnResize委托时触发EventCallbackstring[]。这样即使面板尺寸由 JS 驱动.NET 侧的组件状态也能保持一致为受控模式见下文提供了数据基础。五、SplitterPanel 面板参数与垂直布局搭配使用面板组件 SplitterPanel.cs 提供以下参数垂直布局下同样适用只是“尺寸”语义从宽度变为高度参数类型默认值说明Sizestring50%面板初始尺寸。垂直布局下即初始高度支持px/%Minstring无面板最小尺寸如Min20%拖拽时不可越过该边界Maxstring无面板最大尺寸DefaultSizestring无面板默认尺寸从源码结构看该参数当前尚未被Splitter消费使用前建议以Size为准Collapsibleboolfalse是否允许快捷折叠面板Resizablebooltrue是否允许拖拽调整任一面板禁用后整个拖拽被禁用其中Size与Min支持的长度单位语义由 UnitOfPaneSize.cs 中的Pixel/Percent枚举定义实际使用时以字符串形式书写如200px、30%。当两个面板都未显式设置Size时默认各占 50%示例中的两个面板即如此。面板注册机制每个SplitterPanel在OnInitialized时调用Splitter.AddPane(this)将自己注册进容器SplitterPanel.cs容器收集到两个面板后通过UpdatePaneStateSplitter.razor.cs将面板参数提升为自身渲染属性ShouldRender仅在两块面板齐全时才允许渲染Splitter.razor.cs这保证了分隔条与两块面板的 DOM 结构完整可用。六、垂直布局与其它演示能力的组合除垂直方向外同一目录下还有三个演示用例可与垂直布局自由组合尺寸控制size.md 展示通过Size40% Min20%初始化并限制面板尺寸。垂直布局下可写作SplitterPanel Size40% Min20%表示上方面板初始占容器高度 40%、最小 20%。可折叠collapsible.md 展示Collapsible快捷收缩能力并可用Min限制折叠后不能通过拖拽展开。在垂直布局中分隔条两侧会出现上/下箭头up/down图标对应 Splitter.razor 中按Layout选择的图标方向。受控模式control.md 展示通过OnResize回调与Size参数双向绑定实现受控尺寸任一面板设置Resizablefalse后整体拖拽即被禁用。垂直布局下同样适用这套受控流程。组合示例垂直 可折叠 尺寸限制Splitter LayoutSplitterLayout.Vertical Styleheight: 300px; SplitterPanel Collapsible Min20% p顶部面板/p /SplitterPanel SplitterPanel Collapsible p底部面板/p /SplitterPanel /Splitter七、注意事项与限制结合 index.zh-CN.md 的说明与当前源码目前仅支持两个面板组件内部_panes.Count 2才触发状态同步与渲染Splitter.razor.cs多面板支持属于后续规划勿在业务中直接放置三个及以上SplitterPanel。垂直布局务必给定容器高度与水平布局依赖容器宽度不同垂直布局的高度分配以容器height为基准示例中固定200px的做法可避免面板高度塌缩。Size与Min的单位支持px与%百分比相对容器尺寸计算注意与UnitOfPaneSize枚举语义对应。组件处于 Experimental 分类按文档目录分类Splitter 属于实验性组件API 可能在后续版本调整升级组件库版本时应关注变更记录。结语Splitter 的垂直布局看似只是LayoutSplitterLayout.Vertical一行配置背后却串联了 flex 布局方向、CSS 光标与分隔条样式、JS 拖拽坐标轴切换以及 .NET/JS 双向尺寸同步等完整链路。掌握 vertical.md 对应的 Vertical.razor 示例配合 Splitter.razor.cs、splitterHelper.ts 与 style/index.less 三处源码即可在 ant-design-blazor 项目中灵活实现各类上下分栏、可拖拽调高的界面布局。赞分享UI组件前端【免费下载链接】ant-design-blazorA rich set of enterprise-class UI components based on Ant Design and Blazor.项目地址https://gitcode.com/gh_mirrors/an/ant-design-blazor点击查看免费下载相关推荐ant-design-blazor Splitter 垂直布局实战从示例到源码原理ant design blazor Splitter 垂直布局实战从示例到源码原理 本指南聚焦 ant design blazor 组件库中 Splitter前端UI组件设计系统Ant Design Blazor Descriptions 垂直布局Vertical完整实战指南从用法到源码原理Ant Design Blazor Descriptions 垂直布局Vertical完整实战指南从用法到源码原理 Descriptions描述列表组前端UI组件设计系统Ant Design Blazor 栅格垂直对齐实践RowAlign 参数与 Flex 布局实现原理Ant Design Blazor 栅格垂直对齐实践RowAlign 参数与 Flex 布局实现原理 本篇技术文章围绕 ant design blazor 中前端UI组件设计系统上一篇SMUDebugTool终极指南免费开源AMD Ryzen处理器调试工具完全教程下一篇Clinical Evidence Agent 实战指南为医疗 AI 初创公司构建临床证据与可信度框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

深入解析 @freelensapp/application:Freelens 应用启动框架与 Timeslot 时隙机制

深入解析 @freelensapp/application:Freelens 应用启动框架与 Timeslot 时隙机制

云原生开发工具运维 【免费下载链接】freelens Free IDE for Kubernetes 项目地址: https://gitcode.com/gh_mirrors/fr/freelens 点击查看 免费下载 导读 freelensapp/application 是 Freelens(Free IDE for Kubernetes)仓库中负责"创…

2026/10/12 2:02:06 阅读更多 →
git-ftp 版本演进全解析:从增量 FTP 部署到多协议同步的完整技术图谱

git-ftp 版本演进全解析:从增量 FTP 部署到多协议同步的完整技术图谱

开发工具CLIDevOps 【免费下载链接】git-ftp Uses Git to upload only changed files to FTP servers. 项目地址: https://gitcode.com/gh_mirrors/gi/git-ftp 点击查看 免费下载 导读:本文以 git-ftp 官方 CHANGELOG.md 为主线,系统梳理该项…

2026/10/12 2:02:06 阅读更多 →
纯软件STM32仿真入门:QEMU+OpenOCD寄存器级开发环境搭建

纯软件STM32仿真入门:QEMU+OpenOCD寄存器级开发环境搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:02:06 阅读更多 →

最新新闻

数据结构 - > 排序算法

数据结构 - > 排序算法

1. 排序的概念1.1 常见的排序算法1.2 排序算法的评价指标复杂度:评价排序算法的第一大指标就是时间复杂度和空间复杂度,它衡量算法的时间效率和空间效率。稳定性:假定在待排序的数据元素中有两个元素 Ri 和 Rj,它们对应的关键字为…

2026/10/12 3:39:10 阅读更多 →
ccg-workflow Shell 技能指南:Bash 脚本自动化、系统管理与多模型协作实战

ccg-workflow Shell 技能指南:Bash 脚本自动化、系统管理与多模型协作实战

【免费下载链接】ccg-workflow 多模型协作工作流引擎 — /ccg:go 一个命令,AI 自动分析意图、选择策略、编排 Codex Gemini Claude 协作执行 项目地址: https://gitcode.com/gh_mirrors/cc/ccg-workflow 点击查看 免费下载 导读 本文基于 ccg-workfl…

2026/10/12 3:39:10 阅读更多 →
2026年软件测试趋势:AI Agent、质量内建与可观测性重塑质量保障

2026年软件测试趋势:AI Agent、质量内建与可观测性重塑质量保障

做测试这行,每年年底都在猜明年的技术方向,但2026年这次不太一样。我最近和不少测试负责人、开发团队聊下来,大家最焦虑的已经不是又冒出了什么新工具,而是整个质量体系正在被 AI 和平台工程重构,很多沿用多年的测试方…

2026/10/12 3:39:10 阅读更多 →
netdxf实战:DXF文字注释与尺寸标注的创建与修改

netdxf实战:DXF文字注释与尺寸标注的创建与修改

接触过DXF开发的人应该都有这种感觉:画直线、画圆、画多段线都属于“基本功”,真正让图纸变得可读、可传递设计意图的,是文字注释和尺寸标注。这一篇是整个netdxf系列里我比较想写的一篇,因为注释和标注的处理逻辑和普通几何实体完…

2026/10/12 3:39:10 阅读更多 →
文华财经主升浪买点指标公式拆解:多条件共振识别趋势启动

文华财经主升浪买点指标公式拆解:多条件共振识别趋势启动

1. 文华财经主升浪买点指标的实战拆解做期货日内或者波段的朋友,应该都听过“主升浪”这个词。行情走主升浪的时候,速度最快、幅度最大,但也是最难拿得住的一段。很多朋友在文华财经软件里翻遍了各类指标公式,要么信号滞后&#x…

2026/10/12 3:39:10 阅读更多 →
ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

AI 技能人工智能 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 何雨果出品 项目地址: https://gitcode.com/hugohe3/ppt-master 点击查看…

2026/10/12 3:38:09 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →