浮動元素

塊級元素與行內元素,怎麼用CSS控制它們、以及如何合理的使用它們

它們的定義
1.塊級元素:每一個塊級元素默認佔一行高度,如有塊級元素則同行沒法再添加其餘元素(float浮動除外)
特色:
高度行高以及外邊距內邊距均可控制
寬度默認100%
能夠容納內聯元素及塊元素html

2.行內元素:能夠和其餘元素都在一行上.
特色:
寬度就是它的文本或圖片的寬度,不可改變
內聯元素只能容納文本或者其餘的內聯元素
設置寬度width無效
設置高度height無效,可經過line-height來設置
設置margin只有左右有效,上下無效
設置padding只有左右padding有效,上下無效spa

3.行內塊狀元素:綜合了行內元素與塊狀元素的特性,可是各有取捨
特色:
不自動換行
可以識別寬高
默認排列方式從左到右3d

4.塊級元素有哪些:
div | dl(定義列表) | h1(h開頭系列) | hr | menu | ol | p | table | ul htm

5.行內元素有哪些:
a | b | br | em | i | img | input | label | select | span | strong
sub | textarea | u對象

6.行內塊狀元素有哪些:
button | del | iframe | ins | map | objectblog

浮動元素:怎麼使用它們、它們有什麼問題以及怎麼解決這些問題通俗講解

1.首先要知道,div是塊級元素,在頁面中獨佔一行,自上而下排列,也是傳說中的流圖片

clipboard.png

由此能夠看出,即便div1的寬度很小,頁面中一行能夠容下div1和div2,div2也不會排在div1後面,顯然標準流已
經法知足需求,這就要用到浮動
浮動能夠理解爲讓某個div元素脫離標準流,漂浮在標準流之上,和標準流不是一個層次。
假設上圖中的div2浮動,那麼它將脫離標準流,可是div1,div3,div4仍然在標準流當中因此div3會自動向上移動,佔據div2的位置,從新組成一個流。ip

clipboard.png

從圖中能夠看出,div2再也不屬於標準流,div3自動上移頂替div2的位置,div1,div3,div4依次排列,成爲新的流,又由於浮動是漂浮在標準流上面的,因此div2擋住了一部分的div3,因此div3看起來變矮了。get

若是把div2右浮動,咱們看的是這個效果:input

clipboard.png

下面咱們把div2和div3都加上左浮動,效果如圖:

clipboard.png

同理,因爲div2,div3浮動以後,div3會跟隨在div2以後,可是從以上的每一個例子中,div2都是浮動的,可是卻沒有跟在div1以後,所以能夠獲得一個重要結論:
div元素A是浮動的,若是A元素上一個元素也是浮動的,那麼A元素會跟隨在上一個元素的後邊(如果一行放不下的狀況,則會被擠到下一行);若是A元素上一個元素是標準流中的元素,那麼A的相對垂直位置不會改變,也就是說A的頂部是和上一個元素的底部對齊。
假如咱們把div2,和div4左浮動,效果圖以下:

clipboard.png

結論依然是:div2,div4浮動,脫離了標準流,所以div3將會自動上移,與div1組成標準流。div2發現上一個元素是標準流的元素,所以div2相對垂直位置不變,與div1底部對劉。div4發現上一個元素div3也是標準流中的元素,所以div4的頂部與div3的底部對齊。
恭喜你已經掌握了添加浮動.
如今咱們來聊一下清除浮動,有上邊的基礎清除浮動很是理解

語法:clear: none | left | right | both
none:容許兩邊都有能夠有浮動對象
left:不容許左邊有浮動對象
right:不容許右邊有浮動對象
both:不容許有浮動對象

根據上邊的基礎,假如頁面中只有兩個元素div1,div2,他們都是左浮動,場景以下:

clipboard.png
這時候使用清除浮動,根據官方定義,讀者可能會嘗試這樣寫,在div1中的樣式中添加clear:right,理解爲不容許div1的右邊有浮動元素,因爲div2是浮動元素,所以會自動下移一行來知足規則。
其實這種理解是不正確的,這樣作沒有任何效果。
對於CSS的清除浮動(clear),必定要牢記:這個規則只能影響使用清除的元素自己,不能影響其餘元素。
怎麼理解呢?就拿上邊的例子來講,咱們是想讓div2移動,但咱們倒是在div1元素的CSS樣式中使用了清除浮動,試圖經過清除div1右邊的浮動元素 (clear:right;)來強迫div2下移,這是不可行的,由於這個清除浮動是在div1中調用的,它只能影響div1,不能影響div2。
根據定論,要想讓div2下移,就必須在div2的CSS樣式中使用浮動。本例中div2的左邊有浮動元素div1,所以只要在div2的CSS樣式中使用clear:left;來指定div2元素左邊不容許出現浮動元素,這樣div2就被迫下移一行。
對於右浮動也亦是如此。

參考:http://www.cnblogs.com/iyangy...

相關文章
相關標籤/搜索