續更 一起來擼一下Flex布局裡面的那些屬性

2021-09-11 21:59:38 字數 4294 閱讀 6483

flex的全稱是flexible box,意為彈性布局,用來為盒模型提供最大的靈活性。

flex包含的屬性有很多,每個屬性又包含了許多不同意義的屬性值···然而在實際開發中,能被我們臨幸的可能也只是那麼幾個:

複製**

上面是一本正經的分割線!

任何乙個容器都可以通過設定 display

為 flex/inline-flex

將其指定為flex布局。對於設定了flex布局的容器,子元素的 float、clear、vertical-align

屬性將失效;但是,如果對這些子元素設定 position

定位,那麼flex屬性的作用會失效,一張圖說明他們的作用權重:

採用flex屬性布局的元素稱為

flex容器,而其所有的子元素稱為

flex專案。容器預設存在兩根軸線:水平的

主軸(main axis)和垂直的

交叉軸(cross axis)。軸的起始和結束為止分別稱作main/cross start和main/cross end。專案預設沿主軸排列,專案佔據的軸的空間叫main/cross size。詳見下圖:

flex布局元素分為flex容器和flex專案,因而有flex容器屬性和flex專案屬性的區分。

1. flex的容器屬性包括:

1.1 flex-direction

該屬性定義了主軸的方向,即專案的排列方向。value的取值包括:row | row-reverse | column | column-reverse。其中 row

是預設值,表示水平方向排列(起點在左端); column

表示垂直方向(起點在頂端);帶 -reverse

的值則表示反方向。用法及其效果圖如下:

示例**:

class="flex-box">

class="flex-item">item1div>

class="flex-item">item2div>

class="flex-item">item3div>

div>

複製**

.flex-box

.flex-item

複製**

示例效果:

1.2 flex-wrap屬性

該屬性定義專案是否換行以及如何換行。在預設情況下,專案都排在一條軸線上,如果一條軸線排不下,瀏覽器就根據這個屬性的值對專案排列做相應調整。value的取值包括:nowrap | wrap | wrap-reverse,其中,nowrap

是預設值,不換行。用法及其效果圖如下:示例**:

.flex-box

複製**

示例效果:

說明:

wrap

表示換行,第一行在上方。使用

row-reverse

換行時,第一行在下方,亦即圖中item6會出現在第一行。

1.3 flex-flow屬性

該屬性是 flex-direction

和 flex-wrap

的簡寫形式,預設值為row nowrap

。使用方式如下:示例**::

.flex-box

複製**

1.4 justify-content屬性

該屬性定義了專案在主軸(main axis)上的對齊方式,value的取值包括:

用法及效果如下:

說明:這些屬性對專案的作用是根據主軸的方向不同而改變的,如果將

direction

設定為

column

,那麼這些效果則表現在縱向。

1.5 align-items屬性

該屬性定義專案在交叉軸(cross axis)上的對齊方式。value的取值包括:

效果如下:

1.6 align-content屬性

該屬性定義了多個軸線的對齊方式。value的取值包括:

咦!怎麼都這麼熟悉呢?對比原來發現這個屬性的取值是跟前兩個屬性的取值有很大相似的。但它們其的效果還是有區別的。看圖:

對比下align-items裡面的center,是不是發現不同呢?

每一行專案之間的距離變小了!是變小了嗎?其實是

軸線居中了!在這裡,因為專案的換行,形成了多條軸線,而align-content就是作用在軸線上的,所以它會讓每一條軸線居中。而align-items是將所有的專案看做乙個整體,即使專案換行,也是將整個專案看做是一條軸線,最後將這個整體居中。

1. flex的專案屬性包括:

1.1 order屬性

該屬性定義專案的排列順序,數值越小,排列越靠前,預設值為0。

示例**:

class="flex-box">

class="flex-item">item1div>

class="flex-item">item2div>

class="flex-item">item3div>

div>

複製**

.flex-box

.flex-item

div:first-child

div:nth-child(2)

div:last-child

複製**

示例效果:

說明:在本例中沒有設定flex-direction的屬性,那麼其值預設是row,你也可以嘗試將其設定成column,那麼flex專案則會根據order縱向排列。

1.2 flex-grow屬性

該屬性定義專案的放大比例,預設為0,即不作任何的放大。flex容器下的專案是根據這個值的比例對容器的剩餘空間進行瓜分的。使用效果如下:

說明:在使用這個屬性的時候,一般也最好不要對flex專案設定寬度/高度,否則會影響flex容器的比例分配。

1.3 flex-shrink屬性

該屬性定義了專案的縮小比例,預設為1,即專案縮小。使用效果如下:

說明:這裡flex容器的寬度設定成600px,flex專案的寬度均為300px,margin:10px;在為item1分配完空間後,剩下的空間被後面兩個專案按比例縮小分配。

1.4 flex-basis屬性

該屬性定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸(main asix)是否有多餘空間。它的預設值為auto,即專案的原本大小。它換可以設定為跟width屬性一樣的值(eg: 100px),即專案佔據固定空間(容器寬度不夠自動被壓縮)。使用效果如下:

說明:該屬性的用法就像是使用width(flex-direction:row; 的時候)或heigh(direction為column的時候)屬性那樣,在容器寬度不夠的時候,它會按照flex-shrink屬性的預設值壓縮專案。

1.5 flex屬性

該屬性是前三個屬性:flex-grow、flex-shrink、flex-basis

的簡寫形式。預設值為0 1 auto,即不放大,自動縮小,後面兩個屬性值是可選項。該屬性有兩個快捷鍵值:auto(0 1 auto),none(0 0 auto)。建議優先使用這個屬性,而不是單獨寫三個分離的屬性。

1.6 align-self屬性

該屬性允許單個專案有與其他專案不一樣的對齊方式。可覆蓋作用在flex容器上的align-items屬性。預設值為auto,表示繼承父元素align-items屬性,如果沒有父元素,則等同stretch。value的取值包括:auto、flex-start、flex-end、end、baseline、stretch

。該屬性的取值除了auto之外,其他屬性作用在該專案上的效果跟align-items作用在專案父元素(flex容器)上的效果是一樣的,唯一不同的是:align-self僅對使用了該屬性的專案產生效果,align-items是對所有的專案產生效果。

天下武功,唯快不破。flex的優秀在於它的快捷,開發過程中使用flex布局可以輕鬆地達到你想要的布局效果,方便快捷。嘗試它並愛上它~

一起來玩了下 InfluxDb 吧

我比較懶,能用簡單的辦法搞定,就不喜歡習慣用開源的東西,因為覺得自己學習的也比較慢,但是不得不說這種快速上手乙個陌生產品的能力很重要,我很缺乏這種能力。我們提供乙個長連線服務,占用埠8080,我最初的方式通過 shell 指令碼做乙個簡單的監控,資料都直接寫在了日誌檔案裡。while dosleep...

一起來挑戰Google code jam 一

給你兩個陣列va和vb,兩個陣列的元素對應相乘,然後求和,要求和最小,在陣列元素順序可以調整的時候。這裡主要用到乙個不等式,x和y兩個公升序的陣列,那麼sum x i y i sum x i y n i void fun printf d n res 題意是給你一排p個牢房,最初的時候每個牢房中有乙...

一起來學習Ant Design

當然,都屬於webpack中的基礎知識,但是套上了atool build這樣乙個殼子,又有點小懵。還好不是很難,嘗試後,很快搞定了,順手也總結一下吧!一 安裝ant init 1 npm install antd init g 二 建立目錄 1 mkdir antd demo cd antd dem...