CSS Flexbox

1
2
3
4
5
6
7
8

Jifunze kufanya kwa kufikia.

CSS Flexbox 布局模块

在 Flexbox 布局模块(问世)之前,可用的布局模式有以下四种:

  • 块(Block),用于网页中的部分(节)
  • 行内(Inline),用于文本
  • 表,用于二维表数据
  • 定位,用于元素的明确位置

弹性框布局模块,可以更轻松地设计灵活的响应式布局结构,而无需使用浮动或定位。

Mafanikio ya barabara

Barabara zote za kifupi zinaongea kwa Flexbox. flexbox Mafano.

29.0 11.0 22.0 10 48

Mifano ya Flexbox

Kuwa kuwa kuanza kutumia modeli ya Flexbox, inafaa kuangalia kwanza kufafanua kufungua kina Flex.

1
2
3

上面的元素表示一个带有三个 flex 项目的 flex 容器(蓝色区域)。

Mfano

含有三个 flex 项目的 flex 容器:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Jifunze kufanya kwa kufikia.

父元素(容器)

通过将 display 属性设置为 flex,flex 容器将可伸缩:

1
2
3

Mfano

.flex-container {
  display: flex;
}

Jifunze kufanya kwa kufikia.

以下是 flex 容器属性:

Mwongozo wa flex-direction

flex-direction 属性定义容器要在哪个方向上堆叠 flex 项目。

1
2
3

Mfano

column 值设置垂直堆叠 flex 项目(从上到下):

.flex-container {
  display: flex;
  flex-direction: column;
}

Jifunze kufanya kwa kufikia.

Mfano

column-reverse 值垂直堆叠 flex 项目(但从下到上):

.flex-container {
  display: flex;
  flex-direction: column-reverse;
}

Jifunze kufanya kwa kufikia.

Mfano

row 值水平堆叠 flex 项目(从左到右):

.flex-container {
  display: flex;
  flex-direction: row;
}

Jifunze kufanya kwa kufikia.

Mfano

row-reverse 值水平堆叠 flex 项目(但从右到左):

.flex-container {
  display: flex;
  flex-direction: row-reverse;
}

Jifunze kufanya kwa kufikia.

Mwongozo wa flex-wrap

flex-wrap 属性规定是否应该对 flex 项目换行。

下面的例子包含 12 个 flex 项目,以便更好地演示 flex-wrap 属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Mfano

wrap 值规定 flex 项目将在必要时进行换行:

.flex-container {
  display: flex;
  flex-wrap: wrap;
}

Jifunze kufanya kwa kufikia.

Mfano

nowrap 值规定将不对 flex 项目换行(默认):

.flex-container {
  display: flex;
  flex-wrap: nowrap;
}

Jifunze kufanya kwa kufikia.

Mfano

wrap-reverse 值规定如有必要,弹性项目将以相反的顺序换行:

.flex-container {
  display: flex;
  flex-wrap: wrap-reverse;
}

Jifunze kufanya kwa kufikia.

Mwongozo wa flex-flow

flex-flow 属性是用于同时设置 flex-direction 和 flex-wrap 属性的简写属性。

Mfano

.flex-container {
  display: flex;
  flex-flow: row wrap;
}

Jifunze kufanya kwa kufikia.

Mwongozo wa justify-content

justify-content 属性用于对齐 flex 项目:

1
2
3

Mfano

center 值将 flex 项目在容器的中心对齐:

.flex-container {
  display: flex;
  justify-content: center;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-start 值将 flex 项目在容器的开头对齐(默认):

.flex-container {
  display: flex;
  justify-content: flex-start;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-end 值将 flex 项目在容器的末端对齐:

.flex-container {
  display: flex;
  justify-content: flex-end;
}

Jifunze kufanya kwa kufikia.

Mfano

space-around 值显示行之前、之间和之后带有空格的 flex 项目:

.flex-container {
  display: flex;
  justify-content: space-around;
}

Jifunze kufanya kwa kufikia.

Mfano

space-between 值显示行之间有空格的 flex 项目:

.flex-container {
  display: flex;
  justify-content: space-between;
}

Jifunze kufanya kwa kufikia.

Mwongozo wa align-items

align-items Mafanikio huitumika kuanzisha mifanikio ya kina kwa kina kina flex.

1
2
3

Kwa mifano hii, tumetumia kina kipimo 200 kipimo kipya, kuzingatia kuonekana kwa hisia ya uangalifu wa mafanikio ya align-items.

Mfano

center Inaonesha kwamba projekti ya flexi inafikiria kwenye kati cha kifungu:

.flex-container {
  display: flex;
  height: 200px;
  align-items: center;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-start Inaonesha kwamba projekti ya flexi inafikiria kwenye kwanza cha kifungu:

.flex-container {
  display: flex;
  height: 200px;
  align-items: flex-start;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-end Inaonesha kwamba projekti ya flexi inafikiria kwenye chini cha kifungu:

.flex-container {
  display: flex;
  height: 200px;
  align-items: flex-end;
}

Jifunze kufanya kwa kufikia.

Mfano

stretch Inaonesha kwamba projekti ya flexi inenea kufikiria kufikiria kifungu (kwa kawaida):

.flex-container {
  display: flex;
  height: 200px;
  align-items: stretch;
}

Jifunze kufanya kwa kufikia.

Mfano

baseline Inaonesha kwamba projekti ya flexi yana ufuatano kwa mawingu wa chini wa matukio:

.flex-container {
  display: flex;
  height: 200px;
  align-items: baseline;
}

Jifunze kufanya kwa kufikia.

Tahadhari:Kwenye mifano hii, tunatumia font-size tofauti kuonyesha kwamba projekti yana ufuatano kwa kuzingatia mawingu wa chini ya matukio:


1
2
3
4

Mwongozo wa align-content

align-content Inatumiwa kwa kusimamia mafanikio ya flexi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Kwenye mifano hii, tumetumia kifungu cha 600 mita kubwa na kutumia mafanikio ya flex-wrap kwa wrap, ili kufikiria kwa kawaida mafanikio ya align-content.

Mfano

space-between Inaonesha mafanikio ya flexi kwenye mawingu magumu kati:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: space-between;
}

Jifunze kufanya kwa kufikia.

Mfano

space-around Inaonesha mafanikio ya flexi kwenye mawingu kabla, kati na baada ya mawingu:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: space-around;
}

Jifunze kufanya kwa kufikia.

Mfano

stretch Inaonyesha mafanikio ya flexi kuenea kufikiria eneo lenye uharibifu (kwa kawaida):

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: stretch;
}

Jifunze kufanya kwa kufikia.

Mfano

center Inaonesha mafanikio ya flexi kwenye kati cha kifungu:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: center;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-start Inaonesha mafanikio ya flexi kwenye kwanza cha kifungu:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: flex-start;
}

Jifunze kufanya kwa kufikia.

Mfano

flex-end Inaonesha mafanikio ya flexi kwenye mwisho wa kifungu:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: flex-end;
}

Jifunze kufanya kwa kufikia.

Kufikiria kati kwa kufanana

Kwenye mifano iliyotengenezwa, tutasaidia kusolwa masuala ya muhimu ya muundo: kuwafikiria kati kwa kufanana.

Solve: Ingiza justify-content na align-items Mafanikio yaliyotumiwa kwa ujumbe huzingatia kwenda kati, flexi ya projekti yana ufunuo kwa kufikiria kati:

Mfano

.flex-container {
  display: flex;
  height: 300px;
  justify-content: center;
  align-items: center;
}

Jifunze kufanya kwa kufikia.

Mbinu (projekti)

Mbinu ya kifungu cha flex kinahitaji kutoa mafanikio ya flexi (flex).

1
2
3
4

Mfano huo unaonyesha kufikiria vipengele ya kilele nne ya kijasiri yenye kundi la kilele la kijani.

Mfano

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div> 
  <div>4</div>
</div>

Jifunze kufanya kwa kufikia.

Inasababu inayotumika kwa vipengele ya kilele ni:

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

Inasababu ya order

order Inasababu inayohusisha ukirekebisha vipengele ya flex.

1
2
3
4

Inasababu inayohusisha vipengele ya flex ya kwanza kwenye programu haianaeza kuonekana kama kwanza katika muundo.

order Inaruhusiwa sana namba, chaguo cha kuzingatia ni 0.

Mfano

order Inasababu inaweza kuhusisha ukirekebisha vipengele ya flex.

<div class="flex-container">
  <div style="order: 3">1</div>
  <div style="order: 2">2</div>
  <div style="order: 4">3</div> 
  <div style="order: 1">4</div>
</div>

Jifunze kufanya kwa kufikia.

Inasababu ya flex-grow

flex-grow Inasababu inayohusisha ukuzenda kwa vipengele ya flex kwa kawaida kwa vipengele vingine vya kilele.

1
2
3

Inaruhusiwa sana namba, chaguo cha kuzingatia ni 0.

Mfano

Inafanya vipengele ya kilele cha tatu kuzenda kwa umato wa kuzenda kwa vipengele vingine vya kilele kwa wakati wa saba:

<div class="flex-container">
  <div style="flex-grow: 1">1</div>
  <div style="flex-grow: 1">2</div>
  <div style="flex-grow: 8">3</div> 
</div>

Jifunze kufanya kwa kufikia.

Inasababu ya flex-shrink

flex-shrink Inasababu inayohusisha ukushirikiana kwa vipengele ya flex kwa kawaida kwa vipengele vingine vya kilele.

1
2
3
4
5
6
7
8
9

Inaruhusiwa sana namba, chaguo cha kuzingatia ni 0.

Mfano

Hutafuta vipengele ya kilele cha tatu haikuchukuliwa kama vipengele vingine vya kilele:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex-shrink: 0">3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
</div>

Jifunze kufanya kwa kufikia.

Inasababu ya flex-basis

flex-basis Inasababu inayohusisha ukubwa wa awali wa vipengele ya flex.

1
2
3
4

Mfano

Inasababu inayofanya vipengele ya kilele cha tatu kuwa na ukubwa wa awali wa 200 mita:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex-basis: 200px">3</div>
  <div>4</div>
</div>

Jifunze kufanya kwa kufikia.

Inasababu ya flex

flex Inasababu ni inayotafsiri inasababu ya flex-grow, flex-shrink na flex-basis.

Mfano

Inafanya vipengele ya kilele cha tatu haiwezi kuzenda kubwa (0), haiwezi kushirikiana (0), na ina ukubwa wa awali wa 200 mita:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex: 0 0 200px">3</div>
  <div>4</div>
</div>

Jifunze kufanya kwa kufikia.

Inasababu ya align-self

align-self Inauza inasababu inayohusisha ukifuatilia kwa vipengele vyote vinavyotumika kwenye kundi la upana wa kilele.

align-self Hisia inakubadilisha maadili ya kina ya kifungu ya align-items inayotumika kwa kina ya kina ya kifungu.

1
2
3
4

Kwenye mafano hayo, tumia kifungu kikubwa kwa 200 mita kubwa kwa sababu ya kufikiria maelezo ya hisia ya align-self:

Mfano

Inasababisha kina ya viumbe vya ubunifu ya tatu kuelekea kwa kina ya kina ya kifungu:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="align-self: center">3</div>
  <div>4</div>
</div>

Jifunze kufanya kwa kufikia.

Mfano

Inasababisha kina ya viumbe vya ubunifu ya pili kuelekea kwa kina ya kina kwa kina ya kifungu, na kina ya viumbe vya ubunifu ya tatu kuelekea kwa kina ya kifungu ya kina kwa kina ya kifungu:

<div class="flex-container">
  <div>1</div>
  <div style="align-self: flex-start">2</div>
  <div style="align-self: flex-end">3</div>
  <div>4</div>
</div>

Jifunze kufanya kwa kufikia.

Kina ya picha ya Flexbox

Tumia flexbox kufanya kina ya picha ya kijifunze, ambayo inachangia picha za nne, picha za mbili au picha za kina kwa ukubwa wa ekranu:

Jifunze kufanya kwa kufikia.

Tovuti ya kijifunze ya Flexbox

Tumia flexbox kufanya tovuti ya kijifunze, ambayo ina uwanja wa kijifunze na kina ya kifungu ya ubunifu:

Jifunze kufanya kwa kufikia.

Hisia ya CSS Flexbox

Makina ya hisia ya CSS inayotumika pamoja na flexbox ni kule chini:

Hisia Inasababisha kina ya kifungu.
display Inasababisha kina ya HTML kwa kina ya kifungu.
flex-direction Inasababisha viumbe vya ubunifu kwa kifungu.
justify-content Inasababisha viumbe vya ubunifu kuelekea kwa jinga kama hana hali kubadilika kwa axis ya kina.
align-items Inasababisha viumbe vya ubunifu kuelekea kwa jinga kama hana hali kubadilika kwa axis ya kina.
flex-wrap Inasababisha viumbe vya ubunifu kwa ukiripoti, kama hana hali kubadilika kwa kifungu. Inaangalia na flex-wrap.
align-content Inabadilisha maadili ya hisia ya flex-wrap. Kama hisia ya align-items, lakini inasababisha viumbe vya ubunifu kuelekea kifungu, hawezi kuelekea viumbe vya ubunifu.
flex-flow Hisia ya upaswa ya flex-direction na flex-wrap.
order Inasababisha viumbe vya ubunifu vya kifungu kuelekea mawazo yao kwa kina. Inaangalia na order.
align-self Inayotumika kwa viumbe vya ubunifu. Inakubadilisha hisia ya align-items ya kifungu.
flex Hisia ya flex-grow, flex-shrink na flex-basis ni hisia ya upaswa.