使用JSON自定义SharePoint列表表单时如何限制弹出式面板宽度
完全可以限制SharePoint弹出式(Flyout)表单的宽度,你遇到的面板自动扩展到屏幕90%宽度的问题,是现代SharePoint列表内置的响应式逻辑:当自定义表单的内容总宽度超过默认面板的预设阈值时,组件会自动触发面板扩宽适配,不需要额外操作就会生效。
你可以通过两种方式调整,不需要修改列表全局配置,只需要调整现有JSON代码即可:
方法1:给表单最外层容器加宽度约束
你当前使用的头部JSON是整个自定义表单的最外层渲染容器,只要给这个容器补上自定义样式,设置最大宽度,让内容总宽度达不到自动扩宽的阈值,就能从容器层面限制面板宽度。
把原来的头部JSON从基础div配置,替换为带宽度约束的版本:
{ "elmType": "div", "style": { "max-width": "480px", "margin": "0 auto" } }
- 这里的
max-width值可以根据实际需求调整,只要保持在440-480px区间,就不会触发SharePoint的自动扩宽逻辑 - 搭配
margin: 0 auto是为了让表单内容在面板内居中,不会贴靠侧边 - 如果设置后面板宽度仍超过预期,可以把
max-width的数值降到480px以内,就能彻底避开自动扩宽的触发逻辑
方法2:给每个表单区块固定列数
你当前编写的主体JSON里,每个section都没有指定固定的列数,SharePoint会自动根据可用空间给每个区块分配尽可能多的列数,累计的内容宽度很容易超过面板阈值,进而触发90%屏宽的扩宽效果。
给每个section补上固定的columns属性,强制每部分的内容宽度收窄,从根本上避免触发扩宽逻辑,示例配置如下:
{ "sections": [ { "displayname": "", "columns": 2, "fields": [ "Identifier", "Title", "Workstream", "Type" ] }, { "displayname": "", "columns": 2, "fields": [ "AssignedTo", "AssignedAction" ] }, { "displayname": "", "columns": 1, "fields": [ "Comments" ] }, { "displayname": "", "columns": 4, "fields": [ "ReqDue", "ReqStatus", "DesignDue", "DesignStatus" ] }, { "displayname": "", "columns": 4, "fields": [ "DevDue", "DevStatus", "TestDue", "TestStatus" ] }, { "displayname": "", "columns": 1, "fields": [ "eDataReqd" ] } ] }
注意:如果某一个section设置的列数过多,导致单行内容总宽度超过480px,还是会触发面板自动扩宽,需要根据实际表单内容调整每段的列数配置。
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

