层叠布局通过Stack
容器组件实现位置的固定定位与层叠,容器中的子元素(子组件)依次入栈,后一个子元素覆盖前一个子元素。
@Entry
@Component
struct StackLayout {
build() {
Stack() {
Column() {}
.width("100%")
.height(300)
.backgroundColor(Color.Red)
Column() {}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
Column() {}
.width("60%")
.height(100)
.backgroundColor(Color.Pink)
}
}
}
Stack
容器组件的特点:
Stack
容器组件的宽等于子元素中最宽的长度。Stack
容器组件的高等于子元素中最高的长度。Stack
容器组件通过alignContent
参数实现位置的相对移动。
@Entry
@Component
struct StackLayout {
build() {
// 设置对齐方式为顶部开端
Stack({alignContent: Alignment.TopStart}) {
Column() {}
.width("100%")
.height(300)
.backgroundColor(Color.Red)
Column() {}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
Column() {}
.width("60%")
.height(100)
.backgroundColor(Color.Pink)
}
}
}
@Entry
@Component
struct StackLayout {
build() {
// 设置对齐方式为顶部中间
Stack({alignContent: Alignment.Top}) {
Column() {}
.width("100%")
.height(300)
.backgroundColor(Color.Red)
Column() {}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
Column() {}
.width("60%")
.height(100)
.backgroundColor(Color.Pink)
}
}
}
@Entry
@Component
struct StackLayout {
build() {
// 设置对齐方式为顶部尾部
Stack({alignContent: Alignment.TopEnd}) {
Column() {}
.width("100%")
.height(300)
.backgroundColor(Color.Red)
Column() {}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
Column() {}
.width("60%")
.height(100)
.backgroundColor(Color.Pink)
}
}
}
上述演示了 Alignment.TopStart
、Alignment.Top
、Alignment.TopEnd
三种对齐方式,其他的对齐方式大家可以用相同的方式依次测试。
Stack
容器组件中,默认的子元素的层叠是根据元素引用的先后顺序。Stack
容器中子元素显示层级关系可以通过Z序控制的zIndex
属性改变。zIndex
值越大,显示层级越高。
@Entry
@Component
struct StackLayout {
build() {
Stack() {
Column() {}
.width("60%")
.height(100)
.backgroundColor(Color.Pink)
.zIndex(3)
Column() {}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
.zIndex(2)
Column() {}
.width("100%")
.height(300)
.backgroundColor(Color.Red)
.zIndex(1)
}
}
}