1. 程式人生 > 其它 >CSS標準文件流與脫離文件流

CSS標準文件流與脫離文件流

技術標籤:css

標準文件流

文件流:指的是元素排版佈局過程中,元素會預設自動從左往右,從上往下的流式排列方式。並最終窗體自上而下分成一行行,並在每行中從左至右的順序排放元素。

標準流的微觀現象:

  • 空白摺疊現象
    在 html 檔案輸入文字,多個空格會被合併成一個空格顯示到瀏覽器頁面中。這種現象稱為空白摺疊現象。

  • 高矮不齊,底邊對齊
    文字還有圖片大小不一,都會讓我們頁面的元素出現高矮不齊的現象,但是在瀏覽器檢視我們的頁面總會發現底邊對齊;

  • 自動換行,一行寫不完時,換行寫
    如果在一行內寫文字過多,超過介面,那麼瀏覽器會自動換行去顯示我們的文字。

標準文件流等級

分為兩種等級:塊級元素和行內元素;

塊級元素:

  • 霸佔一行,不能與其他任何元素並列
  • 能接受寬、高
  • 如果不設定寬度,那麼寬度將預設變為父親的100%,即和父親一樣寬

行內元素:

  • 與其他元素並排
  • 不能設定寬、高。預設的寬度就是文字的寬度

在HTML中,標籤分為:文字級和容器級;
文字級:p、span、a、b、i、u、em
容器級:div、h系列、li、dt、dd

CSS的分類和上面的很像,就p不一樣:所有的文字級標籤,都是行內元素,除了p,p是個文字級,但是是個塊級元素。所有的容器級標籤都是塊級元素。

塊級元素與行內元素的相互轉換

塊級元素可以設定為行內元素;行內元素也可以設定為塊級元素。
舉個例子:

div {
  display: inline;
  background-color: pink;
  width: 400px;
  height: 400px;
}

display是顯示模式,用來改變元素的行內、塊級性質inline就是“行內”,一旦給一個標籤設定display:inline;
那麼這個標籤立即變為行內元素。

  • 此時div和span沒有什麼區別;
  • 此時的div不能設定寬度和高度(即使設定了也並不顯示出來);
  • 此時div可以和別人並排;

同理

span {
   display: block;
   width: 300px;
   height: 300px;
   background-color: green;
}

“block”是“塊”的意思;

  • span標籤變為塊級元素,與div無異;
  • span能夠設定高度和寬度;
  • span必須霸佔一行,別人不能與之並排;
  • 如果不設定寬度,那麼將撐滿父親。

脫離標準文件流

三種方法:
1)浮動
浮動的元素會脫離文件流;
新建一個文件在頁面上新增兩個div給div分別加上class。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="one"></div>
    <div class="two"></div>
</body>
</html>

給div設定一個寬高及背景顏色 給one左浮動

<style>
* {
/*清除預設邊距*/
margin: 0;
padding: 0;
       }
div {
width: 200px;
height: 200px;
       }
.one {
float: left;
background-color: orange;
       }
.two {
background-color: yellow;
       }
</style>

然後用Chrome開啟 結果會是這樣

可以看出給one左浮動後two消失不見了,這時審查元素看一下

會發現two跑到one下面去了,這是因為給one盒子左浮動了。浮動的元素不會佔空間所以two佔去了one的位置。

2)絕對定位
新增三個div分別加上class

給one設定絕對定位 並新增top:110px;left:150px;

可以看到one是可以飄在他們上面的

3)固定定位
把one改成固定定位

重新整理瀏覽器

發現他和absolute一樣;唯一不同的就是他是固定在瀏覽器上的,fixed不會隨著瀏覽器滾動條而滾動;