> 程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前!
---
1.弹性布局(Flex)
弹性布局分为单行布局和多行布局。
默认情况下,Flex 容器中的子元素都排在一条线(又称“轴线”)上。子元素尺寸总和大于 Flex 容器尺寸时,子元素尺寸会自动挤压。
wrap 属性控制当子元素主轴尺寸之和大于容器主轴尺寸时,Flex 是单行布局还是多行布局。
在多行布局时,通过交叉轴方向,确认新行排列方向。
参数:wrap
值:枚举 FlexWrap
示例代码:
@Entry
@Component
struct Index3{
build() {
Flex({wrap:FlexWrap.Wrap}) {
Text()
.width(80)
.height(40)
.backgroundColor(Color.Pink)
.margin(5)
Text()
.width(80)
.height(40)
.backgroundColor(Color.Orange)
.margin(5)
Text()
.width(80)
.height(40)
.backgroundColor(Color.Pink)
.margin(5)
Text()
.width(80)
.height(40)
.backgroundColor(Color.Orange)
.margin(5)
Text()
.width(80)
.height(40)
.backgroundColor(Color.Pink)
.margin(5)
Text()
.width(80)
.height(40)
.backgroundColor(Color.Orange)
.margin(5)
}
.width('100%')
.height(200)
.backgroundColor('#ccc')
}
}
效果如下图所示:
2.综合实实践-商品列表
@Entry
@Component
struct Index{
build() {
Column() {
Flex({ wrap: FlexWrap.Wrap }) {
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥666 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量666')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥888 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量888')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥333 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量666')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥444 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量666')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥555 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量666')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
Column({ space: 8 }) {
Image($r('app.media.xw'))
.width('100%')
.borderRadius({topLeft: 5, topRight: 5})
Text('[ 程序员必备 ] 最高版本-格子衫')
.fontSize(12)
.maxLines(1)
.textOverflow({overflow: TextOverflow.Ellipsis})
.padding({left: 10, right: 10})
Text() {
Span('¥444 ')
.fontSize(12)
.fontColor('#f52555')
Span('销量444')
.fontSize(8)
.fontColor('#999')
}
.padding({left: 10, right: 10})
}
.width('47%')
.backgroundColor('#fff')
.margin({right: 10, bottom: 10})
.borderRadius(5)
.alignItems(HorizontalAlign.Start)
.padding({bottom: 10})
}
}
.width('100%')
.height('100%')
.backgroundColor('#f5f6f7')
.padding(10)
}
}
3 层叠布局
3.1 层叠布局概述
层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。
层叠布局通过 Stack 容器组件实现位置的固定定位与层叠,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。
层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等。
3.2 基本使用
Stack 组件为容器组件,容器内可包含各种子元素。其中子元素默认进行居中堆叠。
子元素被约束在Stack下,进行自己的样式定义以及排列。
@Entry
@Component
struct Index{
build() {
Column(){
Stack() {
Column(){}
.width('90%')
.height(130)
.backgroundColor(Color.Gray)
Text('text')
.width('60%')
.height('60%')
.backgroundColor(Color.Orange)
Button('button')
.width('30%')
.height('30%')
.backgroundColor('#ff8ff3eb')
.fontColor('#000')
}
.width('100%')
.height(150)
.backgroundColor(Color.Pink)
}
.margin(10)
}
}
3.3 对齐方式
对齐方式
参数:alignContent
取值:枚举 Alignment
Stack({ alignContent: Alignment.BottomEnd }) {
Column(){}
.width('90%')
.height(130)
.backgroundColor(Color.Gray)
Text('程序员Feri')
.width('60%')
.height('60%')
.backgroundColor(Color.Orange)
Button('button')
.width('30%')
.height('30%')
.backgroundColor('#ff8ff3eb')
.fontColor('#000')
}
.width('100%')
.height(150)
.backgroundColor(Color.Pink)
3.4 Z 序控制
属性:zIndex(数字)
特点:取值为整数数字,取值越大,显示层级越高
Stack({ alignContent: Alignment.BottomEnd }) {
Column(){}
.width('90%')
.height(130)
.backgroundColor(Color.Gray)
Text('程序员Feri')
.width('60%')
.height('60%')
.backgroundColor(Color.Orange)
Button('button')
.width('30%')
.height('30%')
.backgroundColor('#ff8ff3eb')
.fontColor('#000')
}
.width('100%')
.height(150)
.backgroundColor(Color.Pink)
.margin(10)
Stack({ alignContent: Alignment.BottomEnd }) {
Column(){}
.width('90%')
.height(130)
.backgroundColor(Color.Gray)
Text('求关注')
.width('60%')
.height('60%')
.backgroundColor('rgba(0,0,0,0.3)')
// Z 序:显示在按钮上一层
.zIndex(1)
Button('button')
.width('30%')
.height('30%')
.backgroundColor('#ff8ff3eb')
.fontColor('#000')
}
.width('100%')
.height(150)
.backgroundColor(Color.Pink)
.margin(10)
呀,不知不觉已经接近0点,明天还得上班,睡觉睡觉,这篇就到这里吧,求关注哈