另外一個比較有意思的是auto,auto是很多尺寸值的默認(rèn)值,也就是由瀏覽器自動計(jì)算。首先是塊級元素水平方向的auto,塊級元素的margin、border、padding以及content寬度之和等于父元素width。使用auto屬性在父元素寬度變化的時候,該元素的寬度也會隨之變化。
但是當(dāng)該元素被設(shè)為浮動時,該元素的width就變成了內(nèi)容的寬度了,由內(nèi)容撐開,也就是所謂的有了包裹性。overflow | position:absolute | float:left/right都可以產(chǎn)生包裹性,替換元素也同樣具有包裹性。在具有包裹性的元素上想利用width : auto;來讓元素寬度自適應(yīng)瀏覽器寬是不行的。
高度方向:外邊距重疊,外邊距auto為0,這兩點(diǎn)需要注意。書寫方向什么的,接觸比較少就不扯了。
那為什么margin:auto對不能計(jì)算垂直方向的值呢?很簡單,垂直方向是被設(shè)計(jì)成可以無限擴(kuò)展的,內(nèi)容越多瀏覽器便產(chǎn)生滾動條來擴(kuò)展,所以垂直方向都找不到一個計(jì)算基準(zhǔn),以此返回一個false,便成了0。
用處:通過width、height控制大小,各個方向的margin值控制與邊界或者其他元素的距離來定位。
浮動
目前PC網(wǎng)站大多使用float布局,從成本上考慮大改的概率很小,所以不要說浮動無用,總是會有機(jī)會讓你維護(hù)的!代表網(wǎng)站:淘寶、騰訊、百度,好吧BAT都到齊了。
浮動聽得多了,博客園上關(guān)于用浮動布局的介紹也非常的多。浮動原本用于文本環(huán)繞,但卻在布局被發(fā)揚(yáng)光大,這就是命!我的理解:浮動布局的核心就是讓元素脫離普通流,然后使用width/height,margin/padding將元素定位。脫離普通流的元素,就像脫離地心引力一樣,與普通流不在一個高度上。這個跟圖層的概念類似。高度不同所以可以疊在其他元素上面產(chǎn)生重疊或者使用負(fù)邊距跑到父元素外,理解了這一點(diǎn)浮動布局就很好理解了。