flex布局的使用

2021-10-18 16:16:33 字數 4468 閱讀 1709

彈性容器:當一元素被設定display:flexdisplay:inline-flex時,這個元素就是彈性容器,而彈性元素則是這個彈性容器中的直接子元素

lang

="en"

>

>

charset

="utf-8"

>

name

="viewport"

content

="width=device-width, initial-scale=1.0"

>

>

documenttitle

>

head

>

>

class

="container"

>

//彈性容器

class

="item"

>

1div

>

//彈性盒子

class

="item"

>

2

class

="item_child"

>

div>

div>

class

="item"

>

3div

>

class

="item"

>

4div

>

div>

body

>

html

>

.container

.item

//container 是彈性容器,而其直接的子元素.item則是彈性元素,但是item中的.item_child則不是彈性元素

樣式如下

主軸和副軸

彈性容器中子元素按照主軸進行排列,主軸預設是水平方向,子元素從左向右依次排列,垂直於主軸的稱為副軸,副軸預設是豎直方向的,預設從上到下。

設定彈性容器中主軸與副軸

flex-direction:可以通過設定flex-direction的值來該變彈性容器的主軸

flex-direction的值

作用row

預設值,從左向右排列

row-reverse

元素從左向右排列

column

主軸設為垂直軸,元素從上到下排列

column-reverse

主軸設為垂直軸,軸方向上,元素從下向上排列

設定主軸為column

.container

.item

當flex-direction的值分別為row, row-reverse,column,column-reverse時顯示如下

彈性容器中子元素的排列方式

主軸的排列方式

通過設定justify-content設定彈性容器中元素在主軸中的排列方式

justify-content的屬性值有:

flex-start:預設值,從主軸的起點開始排列

flex-end:從主軸的終點開始排列

center:居中排列

space-around:每個元素的兩側的間隔相等,元素之間的間隔是元素與容器的間隔的兩倍。

space-between:兩側的緊貼容器,元素之間的間隔相等。

space-evenly:元素之間以及元素和容器的距離都相同。

通過設定align-items設定子元素在副軸上的排列方式

stretch:(預設值)子元素未設定高度或者高度為auto,子元素在副軸上進行拉伸,撐滿父元素;

center:子元素在副軸上居中排列;

flex-start:子元素在副軸的副軸起點開始排列;

flex-end:子元素在副軸的終點開始排列

baseline: 子元素以專案的第一行文字的基線對齊

通過設定flex-wrap設定彈性容器中元素是否換行(列)排列

no-wrap:(預設值)不換行,子元素長度超過主軸時子元素根據比例進行縮小;

wrap:當子元素的高或者寬超過父元素時換行;

wrap-reserve:反方向換行。

通過設定align-content設定副軸多行的對齊方式(當副軸未發生換行時此屬性無效)

(預設值):軸線佔滿整個交叉軸。

flex-start:與交叉軸的起點對齊。

flex-end:與交叉軸的終點對齊。

center:與交叉軸的中點對齊。

space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。

space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍。

flex-grow屬性

flex-grow:當彈性容器中還有空間為填滿時,子元素的放大比例,預設為0,即不放大;

當所有子元素的flex-grow都為相同是,均勻分配,劃分的規則為父元素中剩餘的空間除以所有子元素中的flex-grow的值得和,再乘以本元素的flex-grow的值。flex-shrink屬性

flex-shrink:當彈性容器不足以容納所有彈性元素時,彈性元素縮小比例,預設值為1,即空間不足時,彈性元素縮小。

縮小的規則為: 子元素超出父元素的長度除以(當前元素的flex-shrink值當前元素的原長度+其他元素的flex-shrink的值原長度)*當前元素的flex-shrink值 。原長度減去上面的值就是元素縮小的值;

例子:

彈性容器長為 200px ,彈性容器中有4個子元素每個元素長100px,第乙個子元素flex-grow值為 0,剩下的均為1;

第乙個元素不進行縮小,剩下的等比例縮小

計算:(1004-200)/(1001+1001+1001) 100 沒個元素縮小的值

結果:元素本身的長 -縮小的值 100 -2/3100 = 33.4.

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

flex屬性
flex:屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選

order屬性
order:設定元素的排列順序,當元素的order越小排列越前。預設為0;

align-self
align-self:給元素特定的副軸排列方式,與align-item類似,只作用於當前元素。

flex布局的使用

記錄一下flex常用的屬性 caniuse.com可以查詢css屬性的相容情況。content box 總寬度 width padding2 margin2 border2 border box 總寬度 width margin2 父級盒子新增 display flex 使用flex布局之後,子元素...

flex布局 Flex布局

摘要 flex布局主要思想是讓容器有能力讓其子專案能夠改變其寬度 高度 甚至順序 以最佳方式填充可用空間 主要是為了適應所有型別的顯示裝置和螢幕大小 作者 星星 flex 是 flexible box 的縮寫,意為 彈性布局 flex布局主要思想是讓容器有能力讓其子專案能夠改變其寬度 高度 甚至順序...

樣式布局flex的使用

說到頁面布局,無外乎水平垂直,先說說水平,最開始使用最多的是float屬性,但是它有後遺症,塌陷呀清除呀,最後放棄轉戰flex。需要謹記的是,flex是設定在需要生效的元素的父元素上面的。display flex flex direction row column 其中row為水平布局,column...