自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony—Flex和Grid布局

系統(tǒng) OpenHarmony
Flex布局是很常用也是很方便的一種布局模式,此種布局方式已經(jīng)廣泛使用在前端、小程序開發(fā)之中,如果之前已經(jīng)學(xué)習(xí)過 Flex 布局,那么在 Openharmony 中也是大同小異的。

??想了解更多內(nèi)容,請?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??

Flex布局

概述

Flex布局是很常用也是很方便的一種布局模式,此種布局方式已經(jīng)廣泛使用在前端、小程序開發(fā)之中,如果之前已經(jīng)學(xué)習(xí)過 Flex 布局,那么在 Openharmony 中也是大同小異的。

用法

容器的常用參數(shù):

  • direction:子組件在Flex容器上排列的方向,即主軸的方向。
  • wrap:Flex容器是單行/列還是多行/列排列。
  • justifyContent:子組件在Flex容器主軸上的對齊格式。
  • alignItems:子組件在Flex容器交叉軸上的對齊格式。
  • alignContent:交叉軸中有額外的空間時(shí),多行內(nèi)容的對齊方式。僅在wrap為Wrap或WrapReverse下生效。
  • 子組件常用屬性(不是所有屬性)
  • flexGrow: Flex容器的剩余空間分配給給此屬性所在的組件的比例。

簡單的使用

Flex布局的屬性有很多,但是最常用的還是讓子組件垂直水平居中,兩條屬性即可保證子組件垂直水平居中:

Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) {
Text('水平垂直居中顯示').fontSize(18)
}.width('100%').height('100%')

Flex也可用于很多常見布局場景,如下圖效果:

利用direction屬性和flexGrow配合即可輕松達(dá)到上面的布局效果,核心代碼段如下:

Flex({ direction: FlexDirection.Column }) {
Column() {
ForEach(this.ListData, (item)=>{
Text(item).fontSize(18).height(100).width('100%').margin({bottom: 5}).backgroundColor('#575da8')
}, item => item)
}.flexGrow(1).backgroundColor('#08ec89').margin({ bottom: 2 }).padding(10)
Flex({ alignItems: ItemAlign.Center }) {
ForEach(this.navData, (item )=>{
Text(item).fontSize(18).height('100%').flexGrow(1).textAlign(TextAlign.Center).backgroundColor("#18ec08").margin(1)
}, item => item)
}.height(64)
}.width('100%').height('100%')

Flex還有一個(gè)常用的屬性是wrap,可以去配置換行,不過如果是多行建議還是使用Grid布局,更加靈活,下面看看Grid布局。

Grid布局

概述

Grid做前端的同學(xué)應(yīng)該都很熟悉了,翻譯成中文為“柵格” , 它將頁面劃分成一個(gè)個(gè)網(wǎng)格,可以任意組合不同的網(wǎng)格,做出各種各樣的布局。

用法

基本概念:

網(wǎng)格布局的區(qū)域,稱為“容器”,容器內(nèi)部采用網(wǎng)格定位的子元素,稱為"項(xiàng)目"。項(xiàng)目必須使用Grid子組件GridItem子組件包裹,即Grid的子組件必須是GridItem。

容器屬性:

  • columnsTemplate 和 rowsTemplate :

這兩個(gè)屬性用于設(shè)置當(dāng)前網(wǎng)格布局的行和列的數(shù)量,不設(shè)置時(shí)默認(rèn)1列行或者1列。可以采用fr關(guān)鍵字表示各行和列的比例關(guān)系, 以列為例:‘1fr 1fr 2fr’ 將父組件等分為4等份,第一列第二列各占1份,第三列占兩份:

核心代碼如下:

@State Number: String[] = ['0', '1', '2']
build() {
Grid() {
ForEach(this.Number, (item: string) => {
ForEach(this.Number, (item: string) => {
GridItem() {
Text(item)
.fontSize(16)
.backgroundColor(Color.Grey)
.width('100%')
.height('100%')
.textAlign(TextAlign.Center)
}.borderWidth(1)
}, item => item)
}, item => item)
}
.columnsTemplate('1fr 1fr 2fr')
.rowsTemplate('1fr 1fr 2fr')
.backgroundColor(Color.Black)
.height(300)
}

這兩個(gè)屬性里面也可使用px單位,如將columnsTemplate修改:

.columnsTemplate('100px 1fr 1fr')

展示效果如下:

  • columnsGap 和 rowsGap :

這兩個(gè)屬性可以設(shè)置行列之間的間距,此處不在贅述。

  • layoutDirection:

LayoutDirection.Row和LayoutDirection.Column ,不過嘗試過后兩種值的結(jié)果都是按列排布,默認(rèn)不給屬性的話是按行排布,這里應(yīng)是沒有完全支持

其他屬性:

看到文檔還提供了很多屬性,但目前嘗試過后沒有效果,未支持。

事件

onScrollIndex(first: number) => void

當(dāng)前列表顯示的起始位置發(fā)生變化會觸發(fā)這個(gè)事件,若要展示效果,則需使布局出現(xiàn)滾動條,可以去掉rowsTemplate屬性,然后在子組件內(nèi)部設(shè)置高度,然后再添加事件監(jiān)聽:

Grid() {
ForEach(this.Number, (item: string) => {
ForEach(this.Number, (item: string) => {
GridItem() {
Text(item)
.fontSize(16)
.backgroundColor(Color.Grey)
.width('100%')
.height(80)
.textAlign(TextAlign.Center)
}
}, item => item)
}, item => item)
}
.columnsTemplate('1fr 1fr 1fr 1fr 1fr')
.columnsGap(10)
.rowsGap(10)
.onScrollIndex((first: number) => {
console.log(first.toString())
})
.backgroundColor(Color.Black)
.height(300)

總結(jié)

Grid布局與Flex有一定的相似性,都可以指定容器內(nèi)部多個(gè)項(xiàng)目的位置。但是,它們也存在重大區(qū)別。 Flex 布局是軸線布局,只能指定"項(xiàng)目"針對軸線的位置,可以看作是一維布局。Grid 布局則是將容器劃分成"行"和"列",產(chǎn)生單元格,然后指定"項(xiàng)目所在"的單元格,可以看作是二維布局。其實(shí)掌握這兩種布局方式,頁面上面大部分效果都是可以做出來的。當(dāng)然,當(dāng)前Gird布局還有很多屬性是不支持的,相比較與傳統(tǒng)的前端grid布局功能上有很多不足,期待API更新,完善功能。

??想了解更多內(nèi)容,請?jiān)L問:??

??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

??https://ost.51cto.com??


責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2023-02-07 09:01:22

CSS

2022-08-01 08:02:25

單元格可視化語法

2022-03-23 08:01:36

CSSGrid小游戲

2010-08-06 15:20:25

Flex Builde

2010-08-05 13:27:06

Flex布局

2021-12-01 09:53:46

CSS 技巧代碼重構(gòu)

2022-10-13 09:01:24

GridCSS二維布局

2017-10-10 15:52:17

前端FlexboxCSS Grid

2022-10-08 00:02:00

CSS工具系統(tǒng)

2024-04-22 09:12:36

CSSflexgrid

2024-04-09 10:10:23

GridCSS網(wǎng)格

2010-08-05 13:14:16

Flex布局

2010-08-13 14:39:57

Flex布局

2020-03-26 10:43:57

CSS Grid Ge Grid代碼

2018-08-08 15:57:05

csshtml前端

2017-03-27 09:36:20

Flex布局計(jì)算

2016-11-04 10:49:48

微信小程序

2010-08-05 13:44:12

Flex布局

2010-08-05 13:20:41

Flex最優(yōu)布局

2010-08-05 13:33:06

Flex布局規(guī)則
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號