對於float與流體布局的一點認識

2021-07-29 00:05:18 字數 2348 閱讀 5409

在學完css中浮動的效果後還是有一點蒙,為了更好的認識及使用浮動,現在整理一下思路。

浮動,最初是用來實現文字環繞的效果,所以如果將某乙個元素打上浮動標籤,其後面緊跟的乙個元素就會緊跟浮動形成環繞效果。為了實現這種效果,就使得浮動具有兩個特性:包裹與破壞。包裹是指不論元素以前具有什麼屬性,在float化之後,元素會具有block屬性,即其具有了塊狀元素的特點,可以不受外部元素的影響,並自成一行。但又因為其具有破壞性,使得父元素高度塌陷,隨之而來的就是後乙個標籤不論是什麼屬性的元素都會環繞其表現。如下**:

class="left">div>

class="right">在學完css中浮動的效果後還是有一點蒙,為了更好的認識及使用浮動,現在整理一下思路。

浮動,最初是用來實現文字環繞的效果,所以如果將某乙個元素打上浮動標籤,其後面緊跟的乙個元素就會緊跟浮動形成環繞效果。為了實現這種效果,就使得浮動具有兩個特性:包裹與破壞。包裹是指不論元素以前具有什麼屬性,在float化之後,元素會具有block屬性,即其具有了塊狀元素的特點,可以不受外部元素的影響,並自成一行。但又因為其具有破壞性,使得父元素高度塌陷,隨之而來的就是後乙個標籤不論是什麼屬性的元素都會環繞其表現。

div>

.left

.right

style>

這樣實現的效果為

可以看到,當下乙個標籤中的內容多於前乙個時,會自動環繞在其四周。這樣就帶來新的問題:如何清除浮動帶來的影響。

在清除其下一級的環繞效果時,可採用clear實現,如上例,前一級是左浮,則可用clear:left,當然也可以用clear:both。

.right

效果為:

但是,當浮動外還有一層div時,並且其內元素均為浮動時,clear就不能發揮作用了。如果在上面例子中加乙個外標籤將left和right包裹起來,再設定border我們會發現其仍有高度:

id="wrap">

class="left">div>

class="right">在學完css中浮動的效果後還是有一點蒙,為了更好的認識及使用浮動,現在整理一下思路。

浮動,最初是用來實現文字環繞的效果,所以如果將某乙個元素打上浮動標籤,其後面緊跟的乙個元素就會緊跟浮動形成環繞效果。為了實現這種效果,就使得浮動具有兩個特性:包裹與破壞。包裹是指不論元素以前具有什麼屬性,在float化之後,元素會具有block屬性,即其具有了塊狀元素的特點,可以不受外部元素的影響,並自成一行。但又因為其具有破壞性,使得父元素高度塌陷,隨之而來的就是後乙個標籤不論是什麼屬性的元素都會環繞其表現。

div>

div>

#wrap

這是因為right部分並沒有設定浮動,其文字具有的高度撐開了父元素的高度,現在將right也設定為浮動。

#wrap

.left

.right

style>

(浮動元素最好設定寬度,像上例,沒有設定 寬度時,不會產生浮動效果,具體原因我也還沒發現)設定寬度和浮動,再設定父層clear:both後效果為

可以發現父元素並沒有被撐開,我所常用的一種方法是:設定父層overflow:hidden

#wrap

可以看見父元素高度塌陷問題解決。但由於瀏覽器的不同,overflow:hidden不一定能在所有瀏覽器上起作用,可以配合zoom:1使用。

浮動還會忽略margin值,主要原因在於float脫離了標準文件流但又沒有absolute脫離的徹底,當元素浮動後,其後的內容會環繞其顯示,但margin值並不是從浮動元素的邊緣開始計算的,而是根據上一級標籤的範圍邊界開始算的,就導致寫了margin值還是緊貼浮動元素,只要設定margin值夠大,比如等於浮動元素寬度加一小段距離就能顯示了。比較方便的是,浮動對padding值敏感,可用padding代替margin。

對於浮動實現兩列三列布局,可將塊中分成兩到三個塊,分別浮動,padding設距離,注意浮動設定寬度,父元素overflow。

但由於浮動在ie6,ie7中會帶來一些奇怪的問題,比如在7中會出現clear的包裹範圍問題,最後兩個浮動元素的垂直間距問題,階梯問題還有右浮不會在同一行顯示問題,所以浮動要慎用,一旦排版發生變化,很可能出現錯位現象。

布局的一點總結

1.box布局 box布局實現了浮動,並且預設沿著一行排列div。超過部分在頁面可視區域之外 一行的右邊 超過部分不會跑到下一行。box布局的好處 如果左對齊,不用考慮子元素的寬度,box 就可以實現真正意義上的流體布局。只要給出相應屬性,瀏覽器會幫我們做額外的計算。2.選擇按鈕 如果用input的...

對於HOOK函式的一點認識

首先讓我們看看hook函式是怎麼安裝 呼叫和刪除的。應用程式通常是呼叫setwindowshookex 函式來進行安裝的,其函式的原型如下 setwindowshookex int idhook hookproc lpfn hinstance hmod dword dwthreadid 引數說明 i...

分享 對於VLAN的一點見解

個人認為it行業從業者必須具備一點點抽象概念。所謂的vlan全稱叫做virtual local area network,翻譯過來便為虛擬區域網。從字面意思上其實我們就可以理解,vlan究竟是個什麼玩意。那麼,如上圖所示,再結合名稱,其實我們可以很好的理解vlan是什麼。通常意義上區域網是指的某個內...