SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理

在 Chrome 开发者工具里使用 SAP UI5 扩展 Inspector 修改 Grid 控件的 defaultSpan 属性,会触发如下的代码:

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第1张图片

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第2张图片

我们通过调用栈,可以发现 SAP UI5 Grid 相关的框架代码调用,确实是 Chrome 扩展 UI5 Inspector 触发的:

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第3张图片

相关代码:GridRenderer:
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第4张图片

外层的 grid container 占据的是整个屏幕的宽度:

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第5张图片

第一个 form container:占据屏幕 1/2 宽度:
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第6张图片

6 6 6 12
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第7张图片

但这里却是 3 3 6 12:

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第8张图片

取得 grid 的 width:
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第9张图片

默认值:3 3 6 12
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第10张图片

Form container 内每个元素没有显式分配 width 吧?至少在 GridRender.js 里根据源代码搜索没有发现。这说明,是用其它方式来控制 Grid 内的元素相对位置的。

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第11张图片

根据调试,发现这个 css 类控制了 50% 的宽度显示:.sapUiRespGridSpanL6

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第12张图片

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第13张图片

改成 80% 之后,就变宽了:
SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第14张图片

label 16.67% 2 / 12 等于六分之一:

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第15张图片

为什么是2?

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第16张图片

但为啥选择的是 L2,而不是 M3?

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第17张图片

切换成 iPhone 之后:.sapUiRespGridMedia-Std-Phone.sapUiRespGridHSpace0>.sapUiRespGridSpanS4

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第18张图片

CSS 类名称更改了,类型从之前的 Desktop 变成了 Phone.

4 除以 12 等于 1/3.

切换成 Tablet 之后,M3,四分之一:25%

SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理_第19张图片

这些出现在 CSS 类里的设备名称,无论是 Desktop,还是 Tablet,Phone,都是基于各种指标的使用设备的基本分类。

这些指标的例子是对触摸事件的支持、使用的操作系统和浏览器的用户代理。

注意:没有简单的方法可以从浏览器提供的信息中准确地确定使用的设备。 因此,我们特别依赖用户代理。 因此,结合给定的设备功能,可以将多个标志设置为真,特别是对于具有触摸功能的桌面设备和请求将网页作为桌面页面的移动设备来说。

你可能感兴趣的:(SAP UI5 sap.ui.layout.Grid 控件宽度百分比的设置原理)