一,浮動的特性
? ? 0, 兩個概念:a, 常規(guī)流(就是文檔流。默認布局,上到下左到右). b, 包含塊(離元素最近的父級塊元素)
????1,浮動元素會脫離常規(guī)流,浮動元素會影響行內(nèi)元素布局(從而可能間接影響塊級元素),浮動的元素會成為塊級
????2,浮動的包含塊(父塊級元素)的布局會忽略浮動元素(有與沒有浮動,父塊級元素布局是一樣的)
????3,浮動與定位一起使用,浮動會無效。但跟relative時是有效的
二,浮動元素的擺放
? ? a,盡量靠左/右、盡量靠上、盡量挨著
? ? b,行內(nèi)元素圍繞浮動元素(行內(nèi)元素在左浮動的右邊,右浮動的左邊)
三,浮動的清除(clear, 對塊級元素有效)
? ? a, clear: none | left | right | both
? ? b, clear只是將塊級元素下移到某一邊(或兩邊)沒有浮動元素為止
四,浮動的閉合(即浮動元素將包含塊撐開)
? ? 0,閉合,就是包含塊大到可以將所有子元素包住。想要達到這個效果有幾種方法,其中最死的方法是設(shè)置包含塊的高度
? ? 1,用常規(guī)流中的塊元素下移達到將包含塊撐開效果(借助clear)
? ? 2,將包含塊的display: table(原理我不清楚)
? ? 3,借助BFC(類似編程語言的作用域),BFC的實現(xiàn)有css3的display: flow-root和overflow屬性
? ? 4,讓包含塊浮動,也是BFC
? ? 5,借助偽元素after,before(還是要用clear,其實就是方法1的優(yōu)化)。通常這么用