前端定位佈局小手冊(positon定位與flex佈局)

初語:

傳統的前端佈局一直是令人頭疼的,positon定位的常用屬性relative、absolute、fixed、static、inherit功能已經挺強大了。

  • relative:相對定位,這個屬性是要配合left、right、top、bottom使用,不然沒有效果,跟正常沒加positon的一模一樣。
  • absolute:絕對定位,元素標籤會根據父容器,進行定位,默認位於父元素的左上角(不添加left、right等屬性)。
  • fixed:絕對定位,元素標籤會根據瀏覽器窗口進行定位。
  • static:元素正常出現在標籤流中,而且不能通過top、bottom等方位屬性定位。原本不加定位的效果保持,且不能改變。
  • inherit:從父容器繼承接管position屬性

flex佈局:

1)概述:

雖然position屬性很強大,但是操作起來挺麻煩的,尤其在於要求子元素等距離間隔,均勻分佈時,flex表現更爲出色。2009年推出的flex佈局現在已經得到了幾乎所有的瀏覽器的支持,完整、簡潔響應的完成頁面的佈局,dispaly:flex就能讓容器變爲彈性盒子,具有極大的靈活性。

2)使用:

.box{
    display: -webkit-flex; /*在webkit內核的瀏覽器上使用要加前綴*/
    display: flex; //將對象作爲彈性伸縮盒顯示
}
行內元素也可以使用Flex佈局

注意:flex的父容器,其子容器的float(浮動)、clear、vertical-align(垂直居中)失效。

3)圖解:


橙色區域:父容器即彈性容器

灰藍色區域:子容器

彈性容器兩根主軸:默認的水平方向主軸(main axis)和垂直方向交叉軸(cross axis)

main start/main end:主軸開始位置/結束位置

彈性容器屬性:

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

1)flex-direction:row | row-reverse | column | column-reverse;

 

2)flex-wrap: nowrap | wrap | wrap-reverse;

  • nowrap:不換行,若容器內子元素超出父容器寬度,則縮小子容器的寬度達到不換行效果。

 

  • wrap:換行,保持子容器的原來尺寸,折到第二行排列。

 

  • wrap-reverse:換行且翻轉排列

 

3)flex-flow: row nowrap;
簡便寫法,默認值爲row nowrap,不做解釋了。

4)justify-content: flex-start | flex-end | center | space-between | space-around;

  • flex-start(默認值):左對齊

 

  • flex-end:右對齊

 

  • center: 居中

 

  • space-between:兩端對齊項目之間的間隔都相等

 

  • space-around:每個項目兩側的間隔相等

 

5)align-items: flex-start | flex-end | center | baseline | stretch;

  • flex-start:靠頂部

 

  • flex-end:靠底部

 

  • center:垂直居中(常用)

 

  • baseline:子容器的第一行文字基準線對齊

 

  • stretch:子容器無高度或者height爲auto即默認高度填滿父容器

 

6)align-content: flex-start | flex-end | center | space-between | space-around | stretch;

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

項目屬性:

  • order

  • flex-grow

  • flex-shrink

  • flex-basis

  • flex

  • align-self

1)order:通過數值大小排序(默認0)越小排名靠前

 

2)flex-grow:默認值0,當子容器沒有佔滿父容器,即父容器有剩餘空間,也不會放大填滿父容器;當子容器中值都爲1時,子容器平分父容器空間;當有一個子容器A爲2,其餘爲1,則A佔據父容器的空間是其餘的2倍,注意justify-content屬性會失效。

 

3)flex-shrink:定義子容器縮小比例,默認值1,當所有子項目爲1,父容器空間不足時,所有項目均縮小,若一個值爲0時,空間不足不縮小。

 

4)flex-basis:默認值auto,根據剩餘空間方法縮小,若一個容器A當值爲1時且父容器空間充足,A的寬度固定的設置值,若父容器沒有多餘的寬度,容器也會跟着縮小。

 

寄語:

學習的過程中留下點滴記錄其實挺不錯的,多動手敲敲就會明白了,我笨所以我這樣,希望能幫助到大家,資源學習都是來自網絡,靈感以及寫作思路來自於阮一峯的前端語法篇,感謝大佬!

聯繫

🐧企鵝:184820911

📕郵箱:[email protected]

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