[js的樂趣]關於float浮動的理解(舉例說明)
阿新 • • 發佈:2019-02-08
浮動佈局時,因為一張圖片遲遲放不對位置,而導致頁面程序為0呢?
到底用display:inline-block;還是用浮動float來解決呢?
到底用display:inline-block;還是用浮動float來解決呢?
是不是因為浮動,導致下面的同級盒子不在應有的位置位置上面呢?
在寫導航欄的時候,如何讓每個li都在一行顯示?
什麼是浮動?
float屬性定義了元素在哪個方向浮動
float:left/right/none/inherit
一、浮動也就脫離了標準文件流
浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。
由於浮動框不在文件的普通流中,所以文件的普通流中的塊框表現得就像浮動框不存在一樣。但其他盒子內的文字依然會為這個元素讓出位置,環繞在周圍。
舉個生活中的例子:人們在地面上排隊,當其得到一個飛行技能(也就是浮動float),那麼便可以不受地面的約束。
而且他原本的位置(佔位)也就不存在了,後面的人會向前進一位
舉個例子:
<style type="text/css"> .one{margin: 100px;} .on01 { width: 50px; height: 100px; background-color: #008000; float: left; } .on02{ width: 50px; height: 50px; background-color: #ccc;} .on03{ width: 50px; height: 50px; background-color: #7FFFD4; } </style> </head> <body> <div class="one"> <div class="on01">01</div> <div class="on02">02</div> <div class="on03">03</div> </div> </body>
這是三個不浮動的div:
給01div盒子一個float:left;
因為它不再處於文件流中,所以它不佔據空間,實際上覆蓋住了02和03盒子,使02、03盒子 從檢視中消失,但是裡面的文字不會因為
給三個div盒子都設定左浮動
如果把所有三個框都向左移動,那麼框 1 向左浮動直到碰到包含框,另外兩個框向左浮動直到碰到前一個浮動框。
那麼如何讓02和03 都在01的右側且並排顯示呢?
可以在02和03盒子加一個父盒子box,讓box左浮動02和03 不浮動(程式碼如下)
.box{ float: left; } .on02{ width: 50px; height: 50px; background-color: #ccc; }
.on03{ width: 50px;
height: 50px;
background-color: #7FFFD4;
float: left; }
<div class="one">
<div class="on01">01</div>
<div class="box">
<div class="on02">02</div>
<div class="on03">03</div>
</div>
</div>
這樣會得到我們希望的效果。不幸的是,下一個元素會受到這個浮動元素的影響。為了解決這個問題,有些人選擇對佈局中的所有東西進行浮動,然後使用適當的有意義的元素(常常是站點的頁尾)對這些浮動進行清理。這有助於減少或消除不必要的標記。css給我們另一個屬性來解決這種因浮動而產生煩惱 clear屬性,我在下一節寫成清除浮動的集中常見的方法