宏觀地講,咱們的web頁面和photoshop等設計軟件有本質的區別:web頁面的製做,是個「流」,必須從上而下,像「織毛衣」。而設計軟件,想往哪裏畫個東西,都能畫
標準文檔流的特性
1.空白摺疊現象(不管多少個空格、換行、tab,都會摺疊爲一個空格)
2.高矮不齊,底邊對齊
3.自動換行,一行寫不滿,換行寫css
行內元素和塊級元素的區別:(很是重要)
行內元素git
塊級元素web
塊級元素和行內元素的相互轉換
咱們能夠經過display
屬性將塊級元素和行內元素進行相互轉換瀏覽器
display:inline;
能夠把塊級元素轉換爲行內元素display:block;
能夠把行內元素轉換爲塊級元素再說一個:display:inline-block;
能夠把行內元素或塊級元素設置爲 行內塊元素 ,能夠並排顯示,而且能夠設置塊級元素的屬性bash
標準流裏面的限制很是多,致使不少頁面效果沒法實現。若是咱們如今就要並排、而且就要設置寬高,那該怎麼辦呢?辦法是:脫離 標準文檔流!佈局
css中一共有三種手段,使一個元素脫離標準文檔流:post
float:left | right | none ;(默認不浮動none)spa
一旦一個元素浮動了,那麼,將可以並排了,而且可以設置寬高了。不管它原來是個行內元素,仍是塊級元素設計
若是給三個div均設置了float: left;屬性以後,而後設置寬高。當改變瀏覽器窗口大小時,能夠看到div的貼靠效果,以下圖
code
一樣,float還有一個屬性值是right,這個和屬性值left是對稱的。
來一張圖,以下:
收縮:一個浮動的元素,若是沒有設置width,那麼將自動收縮爲內容的寬度(這點很是像行內元素) 如圖:
若是一個元素沒有設置高度,它的高度是靠裏面的內容撐起來的。若是父元素內部元素都浮動了,那麼會形成父元素的高度塌陷
若是多個元素浮動了,那麼這們就會並排顯示,若是都是同一個方向的浮動,它們會牢牢地貼在一塊兒(本身動手寫一下)
若是一個元素浮動了,先向上移動,直到貼靠到父元素的邊界,接着,若是是左浮動,就向左移動,直到移動到父元素的左邊界,若是是向右浮動,就向右移動,直接移動到父元素的右邊界
補充:
元素浮動會形成的影響:
對父元素的影響(父元素的高度坍塌)
解決辦法:
加高法
給父元素設置高度,就不會塌陷(簡單,基本不用,大部分狀況下父元素的高度是須要子元素撐起來的)overflow:hidden
簡單,使用overflow:hidden父元素的高度會隨着子元素的高度變化而變化。overflow:hidden本職工做是用來處理溢出 在使用過程當中,須要注意子元素若是想要超出父元素高度,此時overflow:hidden就不適合了隔牆法(clear:both)
在全部子元素後面加一個空的div 在這個div上面加clear:both,就能夠清除浮動(分爲內牆法和外牆法,本質上同樣),clear:both是專業清除浮動的
對後面兄弟元素形成的影響(兄弟元素會向上移動)
解決辦法:
- 在受影響的元素上面的加 clear:both(參考對父元素的影響)
項目中最經常使用的清除浮動的辦法 利用僞元素 after
其實很簡單,就是寫一個清除浮動的類,哪一個元素想要清除浮動,只需加上 class="clearfix" 就能夠,很是簡單
清除浮動類的代碼:
.clearfix:after{
content="";
display:block;
clear:both;
height:0;
}
複製代碼
因爲浮動具備破壞性,因此後面就有一個新的Flex佈局方案,用起來別提多爽了,絕對讓你爽到爆,還簡單容易上手,想了解 Flex佈局 ,請參考個人文章:Flex 佈局教程