[Unity UIToolkit] Flex

  1. basis
  2. shrink,grow
  3. 以及VisualElement的特性(子元素共同占满VisualElement的全部空间)

三者共同作用于UI。具体如下:

  1. VisualElement的实际尺寸是固定的,如1000px。
  2. 其下若有三个 b a s i s = = 400 p x basis==400px basis==400px的子元素,且按照basis设置实际尺寸,那么会超出VisualElement的实际尺寸。出于VisualElement的特性,三个子元素不会超出VisualElement,三个子元素会缩减自身的实际尺寸,导致实际尺寸<basis。
  3. 同理,三个 b a s i s = = 200 p x basis==200px basis==200px的子元素填不满VisualElement,三个子元素会生长,会导致实际尺寸>basis。

basis

basis表明了Flex中shrink和grow的基准,表示沿着父级中Flex->Direction的长度。
在这里插入图片描述

  1. px:以某个像素值作为基准。
  2. %:以父元素的比例作为基准。
  3. auto:根据本元素所包含的子元素进行计算,得到一个能包含所有子元素的值做基准。

auto的示例:
结构
在这里插入图片描述

basisshrinkgrow
green100%11
redauto11

初始(Label中没有任何内容)
在这里插入图片描述
Label中逐渐输入内容
在这里插入图片描述
在这里插入图片描述

shrink和grow

shrink与grow表示的是权重,在同级元素中的权重(若同属一个父元素,这里称同级元素)。权重越大(3>1),表示收缩以及生长的越快,既缩的越小,长的越大。
若同级元素的shrink分别为1,1,3,则在缩小的情形下,元素间的比例为3:3:1。
若同级元素的grow分别为1,1,3,则在生长的情形下,元素间的比例为1:1:3。

Note:
shrink为0,表示不会缩小,若此时子元素的basis总和 > VisualElement的实际尺寸,那么子元素们真的会堆叠到VisualElement的外面。
grow为0,表示不会放大,若此时子元素的basis总和 < VisualElement的实际尺寸,那么子元素们也不会填满VisualElement。

示例

父元素实际尺寸为1000px。

子元素base(px)子元素1的shrink/grow子元素2的shrink/grow子元素3的shrink/grow结果
情形一(不生长)1001/01/01/0三个子元素共占300px,有700px的空白
情形二(生长)同上1/11/11/1三个子元素各占100px,共占300px,但受到父级容器的影响,需要填满父级容器,所以各占父级的1/3
情形三(生长)同上1/11/21/3basis之和<VisualElement实际尺寸,按照比例1:2:3占有VisualElement空间
情形四(不缩小)5000/10/10/1basis之和>VisualElement实际尺寸,但不缩小,超出VisualElement的空间
情形四(缩小)5001/11/11/1basis之和>VisualElement实际尺寸,会超出父级容器范围,各占1/3
情形五(缩小)同上1/12/13/1按照3:2:1的比例占有VisualElement的空间

声明

本人初学者,表述若有问题,请各位大佬在评论区以及私信中指出。本人会积极改正,以免误人子弟。谢谢!

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值