Day4-CSS Layout — Block/inline/inline-block

Tsung-Yu
Tom’s blog
Published in
4 min readMar 25, 2019

今天想以CSS排版作為筆記對象。

CSS語法是每個學寫網頁前端的人都要會的工具,當使用者造訪一個網頁時,眼前的網頁版面配置就是靠CSS做出來的,熟悉不同排版方式的使用時機才能創造出想要的版面,這篇會先討論比較基礎的排版。

在正討論排版常用的定位方式之前,先了解一些HTML基本元素屬性,有助於網頁排版。主要分為塊級元素行內元素行內塊元素

塊狀元素(block):

一個元素可以獨佔一行,可設置元素寬度、高度。 e.g. <h1>~<h6>, <tr>,<td>,<div>,<p>

行內元素/內聯元素(inline):

多個行內元素可排在同一行,可設置元素寬度、高度。 e.g. <a>,<span>, <i>

行內塊元素(inline-block):

同一行內逐個顯示可設置寬度、高度,綜合上面2個特性。 e.g.< img >,<input>

拿以下程式碼做範例:

CSS的顏色部分先省略沒放上來,從上述代碼可以理解到3個元素屬性的差異。

今天,如果假設我們要將<img>標籤的內容要獨占一行要怎麼辦呢?

這時候我們可以進行元素類型轉換,把<img>內的屬性用CSS語法 — display,把原本為inline-block的屬性改為block。作法如下:

更改元素屬性後的結果

接下來要進入正題: 定位

定位(Position):

定位屬性:

static: 默認值,無特殊定位

absolute: 絕對定位

relative: 相對定位

fixed: 固定定位

這些定位屬性的差異在哪兒呢??

static:為默認的屬性,無其他的定位效果

fixed: 將屬性定位在某一處,不管滑鼠滾輪如何滾動,被設定固定定位的元素就會被固定在視窗的某一處。

再來介紹兩個最重要也是常用的定位屬性。

absolute絕對定位:

脫離文檔(document)流

相對於文檔,需要一個有定位屬性(relative)父級元素作為參考點,如果都沒有,即<body>作為參考點

relative相對定位:

相對於元素自己

沒有脫離文檔流

脫離文檔流是啥?為什麼要有定位屬性的父級元素???

先談論脫離文檔流的部分,當一個元素A的定位屬性被設為絕對定位時,表示元素A可以在瀏覽器上的任何位置做定位,不會受其他元素佔位的影響。 如果假設他的父級元素(元素A的上層)無特別設置定位屬性(relative),對應的參考點就是<body>。

紅色為絕對定位 藍色為相對定位

上面我們可以看出紅色的絕對定位因為參考點是<body>可定位範圍變成整個瀏覽器,而相對定位是相對於自己,藍色初始位置(瀏覽器預設位置)是在畫面左上角,透過relative往下且往右30px。

好,我們對紅色方形外面包一個黃色父級元素<div>並給予它一個relative的定位屬性,藍色方形的位置調整成 bottom: 30px; right: 30px;看看會發生什麼事?

參考點變成黃色方形了!

上圖我們可以發現紅色方形可定位的範圍變成黃色方形了~

好,我們再來看看藍色框框的結果。

跑回原本位置了!

可以發現其中差異,藍色方形跑回原本的位置,第二次定的位置是相對於藍色方形現在的位置。

再舉個例子:

絕對定位可以想像是在一所大學內教室的位置,當一位學生離開時,則不保留位置。而相對定位代表人走了,但位置依然保留。

其他的定位方式留待下一篇來寫。以上是今天筆記內容,如果有觀念不正確的地方,歡迎提出指正:)

--

--