文件流 css中的float clear與布局

2021-06-26 11:23:32 字數 2166 閱讀 3307

先說說什麼是文件流  流是什麼 就是一串連續的東西

第乙個框 

第二個框

第三個框

我換行我不換行

當然在放置的過程中 牽扯到行內元素與塊級元素的概念

簡單說明一下

塊級元素: 如div 每乙個div元素佔據一行 如果沒有設定寬度 就預設放滿整行 如果指定了寬度 即使寬度再小 後面的元素也得另起一行放置

行內元素:如span不會換行 舉個例子如a是行內元素 後面的元素就放在a的右邊而不是下邊

說完了文件流 再說說浮動

在上面的例子裡 三個div都是塊級元素 乙個佔一行 可問題是 我就想讓他們的布局如下 怎麼辦

先看**

我換行我不換行

大家看第一行的**裡 多了乙個float:left

它的意思就是說讓這個元素脫離文件流的限制 把他"浮動"到包裹他的容器的最左邊 (此時在文件流裡就沒有它的存在了)

現在在看 那三個div的寬度引數 深紅色的寬度是80 我們只看到了右邊的40 左邊的40個畫素被在文件流之外的粉紅色div擋住了

這個圖的**如下

dd

volvo

saab

fiat

audi

lll

asdf

ddddd

eeee

如果大家用的是chrome的瀏覽器開啟審查元素會看到

其實藍色的111div是從頂行放置的  粉紅色的div放在它上面 擋住了一部分

(lll asdf 居中列印了 同一段**在editplus與chrome顯示不一樣 應該是解釋的機制不同吧)

這也符合上面我們說的文件流的理論: 哪個元素有了float屬性 就把他取出文件流 而文件流內部的元素就放置在自己應該在的位置上

可問題是我想讓asdf也頂行寫不行嗎?

這就牽扯到float的詳細布局方式了 告訴大家一句話

假如某個div元素a是浮動的,如果a元素上乙個元素也是浮動的,那麼a元素會跟隨在上乙個元素的

後邊(如果一行放不下這兩個元素,那麼a元素會被擠到下一行);如果a元素上乙個元素是標準流中的元素,那麼a的相對垂直位置不會改變,也就是說a的頂部總是和上乙個元素的底部對齊。

div的順序是html**中div的順序決定的。

靠近頁面邊緣的一端是

前,遠離頁面邊緣的一端是後。

那有另乙個問題了,如果a本身不是浮動的呢? 鑽牛角尖了吧,如果a不是浮動的,那它就還在文件流裡面唄!就是下面這個圖的大紅色塊說明的道理

如果還是不明白,自己敲幾行**,看看效果就ok

分析咱們的頁面lll的前面元素有浮動標籤 就把lll放在前邊元素的右邊

asdf的上乙個元素是lll 所以asdf就放在lll的正下方 也就是我們圖中的效果

那怎麼辦?

clear : none | left | right | both

取值:none  :  預設值。允許兩邊都可以有浮動物件

left   :  不允許左邊有浮動物件

right  :  不允許右邊有浮動物件

both  :  不允許有浮動物件

clear本身就是清除元素本身的浮動效果的

我們在asdf上加上clear:left就ok了

CSS布局文件流

文件流是文件中可顯示物件在排列時所占用的位置。css定位大致可以分成三類模型 普通流模型 浮動模型 和定位模型 普通文件流 顧名思義,普通流中的元素的位置由在html中的位置決定,根據上下級和前後的順序,乙個乙個的排列在介面上 當然根據元素的型別不一樣,排列的方式會不一樣,但先後順序,顯示層次關係不...

前端 CSS文件流

css的定位機制有3種 普通流浮動 float left right none 和 定位 position static relative absolute 普通流 正常的文件流 在html 裡面的寫法就是從上到下,從左到右的排版布局.塊元素乙個接著乙個,填滿瀏覽器視窗或其他視窗元素的所有可用寬度....

CSS脫離文件流

脫離文件流 也就是將元素從普通的布局排版中拿走,其他盒子在定位的時候,會當做脫離文件流的元素不存在而進行定位。需要注意的是,使用float脫離文件流時,其他盒子會無視這個元素,但其他盒子內的文字依然會為這個元素讓出位置,環繞在周圍。其他盒子與其他盒子內的文字都會無視它。float 如上圖 div2實...