ArkUI 学习之尺寸设置:width, height, size, margin, padding

一、概述

arkUI的布局采用的是前端那一套盒子模型,所以先了解一下盒子模型很有必要,不然我们在进行arkUI布局时,会很懵逼!

1. 盒子模型(BoxModel)

在前端的概念里,所有的​HTML元素​都可以被认为是​盒子​。CSS盒模型代表网站的设计和布局。 它由​外边距​​(margin)​,​边框​​(border)​,​​内边距(填充)​​(padding)​​和​实际内容​组成。

属性以​相同​的​顺序工作​:顶部​(top)​,右侧​(right)​,底部​(bottom)​和左侧​(left)​。

🔊说明:属性工作顺序为​顺时针​,以​(顶部),(右侧),(底部),(左侧)​的顺序。

下图展示了盒模型:

不同部分的说明:

Margin(外边距)​ - 清除边框外的区域,外边距是透明的。(注意:设置背景色时,外边距不会被渲染)
Border(边框) ​- 围绕在内边距和内容外的边框。(大小 样式 颜色)
Padding(内边距)​ - 清除内容周围的区域,内边距是透明的。(注意:设置背景时,内边距会被渲染)
Content(内容)​ - 盒子的内容,显示文本和图像。

🔊举个例子:如果把盒子模型看作是一个生活中的快递,那么内容部分等同于你买的实物,内边距等同于快递盒子中的泡沫,边框等同于快递盒子,外边距等同于两个快递盒子之间的距离。

2. 两种盒子模型(content-box 与 border-box

内容盒(content-box)和边框盒(border-box)是盒子模型中描述元素尺寸的不同方式。

content-box(内容盒)

默认值,标准盒子模型。width 与 height 只包括内容的宽和高,不包括边框(border),内边距(padding),外边距(margin)。

!!!注意:内边距、边框和外边距都在这个盒子的外部。比如说,.box {width: 350px; border: 10px solid black;} 在浏览器中的渲染的实际宽度将是 370px。

尺寸计算公式:

  • width = 内容的宽度
  • height = 内容的高度

宽度和高度的计算值都不包含内容的边框(border)和内边距(padding)。

border-box(边框盒)

width 和 height 属性包括内容,内边距和边框,但不包括外边距。

!!!注意:填充和边框将在盒子内 , 例如, .box {width: 350px; border: 10px solid black;} 导致在浏览器中呈现的宽度为 350px 的盒子。内容框不能为负,并且被分配到 0,使得不可能使用 border-box 使元素消失。

尺寸计算公式:

  • width = border + padding + 内容的宽度
  • height = border + padding + 内容的高度

最后,鸿蒙中使用的就是第二种 border-box 边框盒。

二、鸿蒙中的width, height, size, margin, padding

1. width

width(value: Length)

设置组件自身的宽度,缺省时使用元素自身内容需要的宽度。若子组件的宽大于父组件的宽,则会画出父组件的范围。

🔊:从API version 10开始,该接口支持calc计算特性。

参数

参数名类型必填说明
value Length

参数为Length类型时:要设置的组件宽度。单位:vp。
参数为百分比时:表示所占页面的百分比。

说明
  • TextInput组件中,width设置auto表示自适应文本宽度。

  • AlphabetIndexer组件中,width设置auto表示自适应宽度最大索引项的宽度。

2. height

height(value: Length)

设置组件自身的高度,缺省时使用元素自身内容需要的高度。若子组件的高大于父组件的高,则会画出父组件的范围。

🔊:从API version 10开始,该接口支持calc计算特性。

参数

参数名类型必填说明
value Length

参数为Length类型时:要设置的组件高度。单位:vp。
参数为百分比时:表示所占页面的百分比。

说明

RowColumnRelativeContainer组件中,width、height设置auto表示自适应子组件。

3. size

size(value: SizeOptions)

设置高宽尺寸。

从API version 10开始,该接口支持calc计算特性。 

参数:

参数名类型必填说明
value SizeOptions

设置高宽尺寸。

单位:vp

4. padding

padding(value: Padding | Length | LocalizedPadding)

设置内边距属性。

🔊:从API version 10开始,该接口支持calc计算特性。

参数

参数名类型必填说明
value Padding | Length | LocalizedPadding12+

设置组件的内边距。

参数为Length类型时,四个方向内边距同时生效。

默认值:0

单位:vp

padding设置百分比时,上下左右内边距均以父容器的width作为基础值。

5. margin

margin(value: Margin | Length | LocalizedMargin)

设置外边距属性。

🔊:从API version 10开始,该接口支持calc计算特性。

参数

参数名类型必填说明
value Margin | Length | LocalizedMargin12+

设置组件的外边距。

参数为Length类型时,四个方向外边距同时生效。

默认值:0

单位:vp

margin设置百分比时,上下左右外边距均以父容器的width作为基础值。在RowColumnFlex交叉轴上布局时,子组件交叉轴的大小与margin的和为整体。

例如Column容器宽100,其中子组件宽50,margin left为10,right为20,子组件水平方向偏移10。

 

posted on 2024-11-01 11:05  梁飞宇  阅读(685)  评论(0)    收藏  举报