浮動佈局 和 flex佈局

如花姑娘發表於2019-07-20

浮動佈局

預設流式佈局有不足,浮動佈局可以使塊級標籤並排顯示。
格式:float:left/right/none   none預設的不浮動

特點:
	1.浮動初衷是為了實現字圍(新聞),後面才發現,浮動可以讓多個塊級標籤並排顯示。
	2.在一個父元素內部,如果一個元素浮動了,那麼它就脫離了標準文件流,後面的元素就讓向上排
	3.如果多個元素浮動了,那麼它們就會並排顯示,如果都是同一個方向的浮動,它們會緊緊地貼在一起。
	4.如果一個元素浮動了,先向上移動,直到貼靠到父元素的邊界,接著,如果是左浮動,就向左移動,直到移動到父元素的左邊界,如果是向右浮動,就向右移動,直接移動到父元素的右邊界。
	5.如果元素沒設定高度,那麼它的高度是由裡面的內容撐起來的,如果父元素內部的所有元素都浮動了,會造成該父元素的高度塌陷。
	6.元素浮動對父元素造成影響:造成父元素高度塌陷。
	7.元素浮動對兄弟元素造成影響。
	8.浮動元素的包裹性:一個元素浮動後,這個盒子的寬度會盡可能小,小到剛好包裹住其中的內容
	9.一個元素浮動後,其性質會發生變化,行級標籤浮動後可以設定寬高
	10.若父元素也浮動了,就不會塌陷了
	11.浮動元素只是半脫離了標準文件流
	12.一個元素浮動了,那麼它也是受父元素的控制。當父元素寬度變小時,裝不下所有的子元素時,後面的子元素有貼靠性。當父元素小到極限時,裡面的浮動的子元素寬度是不會改變的。
複製程式碼

浮動的應用: 新聞資訊的字圍效果、實現左右佈局、小導航、多個規則盒子水平排列

元素浮動會造成的影響

1.對父元素造成的影響
	父元素高度塌陷
	解決:加高法:給父元素加高度(基本不用)
	小偏方(overflow:hidden):原本是處理內容溢位問題,後發現也可處理父元素高度塌陷問題
	clear:both 在所有子元素後面加一個空的div 在這個div上面加clear:both  ---> 內qiang法
    優點:clear:both專業清除浮動的  缺點:多寫一個程式碼
2.對後面兄弟元素的影響
	前面元素浮動後,該元素後面的兄弟元素會向上移動
	解決:在受影響的元素上面加 clear:both
專案中最常用的清除浮動的方法:利用偽元素 .clear:after
	就是寫一個清除浮動的類:.clear:after{content=""; display:block; clear:both; height:0; overflow:hidden;} 然後將該類寫到相關標籤中即可
複製程式碼

flex佈局

一種新的佈局方式 flex佈局中有四大概念:
容器: 給一個標籤加"display:flex;",那該標籤就變成了一個容器
橡木:容器中的直接子元素叫專案
主軸:專案預設排列順序的方向
交叉軸:和主軸垂直的那個軸

在容器中有幾個屬性:

flex-direction: direction(方向) 是否要改變主軸方向
row | row-reverse | column | column-reverse
flex-wrap: 容器中專案排滿一行的時候是否換行
nowrap | wrap | wrap-reverse
flex-flow: flex-direction flex-wrap 簡單方法,如下:
flex-flow:column nowrap justify-content: 處理富餘空間
flex-start | flex-end | center | space-between | space-around
align-items: 專案在交叉軸上擺放的位置
flex-start | flex-end | center
align-content: 如果專案有多根主軸,決定多根主軸的排列方式,前提是專案足夠撐滿一行,並且允許換行
flex-start | flex-end | center | space-between | space-around | stretch

在專案中有幾個屬性:

order: 專案的排列順序。數值越小排列越靠前,預設為0;

flex-grow: grow 成長 如果有富餘空間,你可以讓專案變大一點

flex-shrink: shrink 縮小 如果專案足夠多,並且不換行,也就是說一行裝不下,那麼可以縮小專案

flex-basis: 專案在主軸上佔據的大小em

flex: flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。 flex:1表示平均分配富餘空間

align-self: 單獨去設定某一個專案的對齊方式
auto | flex-start | flex-end | center

相關文章