小程序學習記錄(二)——view、text、image標籤、flex佈局

距離上一篇博客已經過去有小半個月時間了,這期間我爲了一個工作機會趕出了幾個項目、四處奔波面試、不斷學習,修改簡歷等。這些會在這兩天整理一下以博客的形式記錄下來。本篇博客繼續我們的小程序學習記錄,記錄的是我覺得小程序比較有意思的常用標籤與 flex 佈局相關知識。

首先介紹的是常用的標籤

1.view

view 作爲小程序中的視圖容器時,其類比對象可以是 web 中的 <head> 或者 <body> 標籤,是標籤與內容的容器;而當 view 作爲小程序中的一個標籤使用時,其類比對象更接近於 <div> 標籤,無論是功能還是初始化屬性都十分接近。但是小程序中 view 新增了以下屬性。

2.text

text 是小程序中的文本內容標籤,功能與佈局類似於 <span> 標籤,小程序中屬性如下,其中 decode 屬性定義爲 true 後可將編碼進行轉義,轉義碼按照 ASCII 碼進行轉義。

3.image

image 是小程序中的圖片標籤,基本功能與佈局類似於 <img> 標籤,mode、lazy-load 與 bindload 屬性都是十分便捷的實現,可以說經過小程序的改造後,這個標籤的功能大大超過了 img 標籤。

其他標籤:包括有視圖容器基礎內容表單組件導航媒體組件地圖組件畫布組件,可以在官網的組件模塊進行瀏覽。

 

接下來介紹一下小程序重量級佈局: flex

display : flex

作爲小程序佈局的起手式,我們先來回顧一下 flex 在 傳統 web 中擔任的角色:

一:Flex 佈局是什麼?

Flex 是 Flexible box 的縮寫,意爲 ‘彈性佈局’,用來給盒狀模型提供最大的靈活性。任何一個容器(包括內聯元素)都可以指定爲 flex 佈局,而在設置 flex 佈局後,子元素的 float、clear 和 vertical-align 屬性將失效。

二:基本概念

採用Flex佈局的元素,稱爲Flex容器(flex container),簡稱”容器”。它的所有子元素自動成爲容器成員,稱爲Flex項目(flex item),簡稱”項目”。

容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;交叉軸的開始位置叫做cross start,結束位置叫做cross end。

項目默認沿主軸排列。單個項目佔據的主軸空間叫做main size,佔據的交叉軸空間叫做cross size。

三:容器屬性

3.1 flex-direction屬性

flex-direction屬性決定主軸的方向(即項目的排列方向)。

它可能有4個值。

  • row(默認值):主軸爲水平方向,從左往右排列。
  • row-reverse:主軸爲水平方向,從右往左排列。
  • column:主軸爲垂直方向,從上往下排列。
  • column-reverse:主軸爲垂直方向,從下往上排列。

3.2 flex-wrap屬性

默認情況下,項目都排在一條線(又稱”軸線”)上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。

 

  • nowrap:不換行

wrap:換行,第一行在上方 

 wrap-reverse:換行,第一行在下方

 

3.3 flex-flow

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,默認值爲row nowrap。理解成前兩個的合併即可。

3.4 justify-content屬性

justify-content屬性定義了項目在主軸上的對齊方式。

它可能取5個值,具體對齊方式與軸的方向有關。下面假設主軸爲從左到右。

  • flex-start(默認值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,項目之間的間隔都相等。
  • space-around:每個項目兩側的間隔相等。所以,項目之間的間隔比項目與邊框的間隔大一倍。

3.5 align-items屬性

align-items屬性定義項目在交叉軸上如何對齊。

它可能取5個值。具體的對齊方式與交叉軸的方向有關,下面假設交叉軸從上到下。

  • flex-start:交叉軸的起點對齊。
  • flex-end:交叉軸的終點對齊。
  • center:交叉軸的中點對齊。
  • baseline: 項目的第一行文字的基線對齊。
  • stretch(默認值):如果項目未設置高度或設爲auto,將佔滿整個容器的高度。

3.6 align-content屬性

align-content屬性定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。

該屬性可能取6個值。

  • flex-start:與交叉軸的起點對齊。
  • flex-end:與交叉軸的終點對齊。
  • center:與交叉軸的中點對齊。
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈。
  • space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。
  • stretch(默認值):軸線佔滿整個交叉軸。

四、項目的屬性

以下6個屬性設置在項目上。

4.1 order屬性

order屬性定義項目的排列順序。數值越小,排列越靠前,默認爲0。

4.2 flex-grow屬性

flex-grow屬性定義項目的放大比例,默認爲0,即如果存在剩餘空間,也不放大。

如果所有項目的flex-grow屬性都爲1,則它們將等分剩餘空間(如果有的話)。如果一個項目的flex-grow屬性爲2,其他項目都爲1,則前者佔據的剩餘空間將比其他項多一倍。

4.3 flex-shrink屬性

flex-shrink屬性定義了項目的縮小比例,默認爲1,即如果空間不足,該項目將縮小。

如果所有項目的flex-shrink屬性都爲1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性爲0,其他項目都爲1,則空間不足時,前者不縮小。

負值對該屬性無效。

4.4 flex-basis屬性

flex-basis屬性定義了在分配多餘空間之前,項目佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto,即項目的本來大小。

它可以設爲跟width或height屬性一樣的值(比如350px),則項目將佔據固定空間。

4.5 flex屬性

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認值爲0 1 auto。後兩個屬性可選。

該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因爲瀏覽器會推算相關值。

4.6 align-self屬性

align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值爲auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同於stretch。

該屬性可能取6個值,除了auto,其他都與align-items屬性完全一致。

 

好了,我們來看一下爲什麼說他是小程序的起手式。首先,小程序是在微信的基礎上進行開發的,也就是說小程序在佈局上有個最大的特點,移動端界面。而移動端界面一般是很小並且可在水平與垂直軸上計算可視界面。

這時候 flex 的優勢就體現出來了。flex 把所有子標籤項目化後,子標籤包括內容就會根據 flex 佈局在主軸與交叉軸上進行分佈,而移動端的可視界面,正好可以將設計稿通過計算後將寬高設置在 flex 的子項目上,直觀的得出設計稿的狀態。對比傳統的 div + css 佈局,這種開發效率被大大的提升了。所以說 flex 是小程序的起手式。

小程序學習記錄(一)

CSS樣式講解(一)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章