# HTML - 區塊元素(block element) vs 行內元素(inline element) ###### tags: `CSS`, `block`, `inline` ## Block elements vs. Inline elements ### 區塊元素 block element `display: block` - 盡可能佔滿整個版面(依照父元素的寬度) - 可以設定寬、高:應避免寫死高度,實際高度應由裡面元素的高度推擠而來 - 另起一行呈現 ##### 常見的區塊元素標籤: - `<div>`:沒有語意,單純拿來排版的標籤 - `<p>`: - 文字內容不是以文字大小來推出高度,而是以行距 `line-height` 來呈現高度 - 不寫 `line-height` 時就是 1 倍 - `<h1>` - `<ul> <li>` ![](https://hackmd.io/_uploads/ByNNCNKlp.png) ### 行內元素 inline element `display: inline` - 比較常用在段落 `<p>` 裡面 - 沒辦法設定寬、高 - 如果要設定寬、高,就改成區塊元素: css 改成 `display: block` - 不會換行 ![](https://hackmd.io/_uploads/B1MS0EKe6.png) #### 常見的行內元素標籤: - `<span>`:本身沒有任何語意,屬於排版用的 inline 標籤,用於點綴樣式,通常用來設定一段文字裡面某幾個字的特殊樣式。例如: 我想讓<span style="color: green">這幾個字</span>變成綠色。 - `<b>`、`<strong>`:用於粗體字。 - `<b>` 取自 bold ,不帶語意,單純讓字體呈現粗體樣式。(通常不建議使用,若單純想要粗體字可以設定 CSS 樣式) - `<strong>` 則帶有語意,用粗體字來強調一段內容特別重要。 - `<i>`、`<em>`:用於斜體字。 - `<i>` 取自 italic 不帶語意,單純讓字體呈現斜體樣式。 - `<em>` 取自 emphasize,則帶有語意,用斜體字來強調一段內容特別重要。 - `<input>` 、 `<textarea>` 、`<select>` - `<img>` - `<a>` :::info 實務上常將 `<a>` 改成 `display:block` ,方便點擊 ::: ### img 圖片都預設會有 3px 的距離(Ref: [css - HTML 5 strange img always adds 3px margin at bottom - Stack Overflow](https://stackoverflow.com/questions/10844205/html-5-strange-img-always-adds-3px-margin-at-bottom)) #### 清除圖片下方的多餘空白 可以使用 `vertical-allign` 或 `display:block;` 來清除圖片下方的多餘空白 ```css img { vertical-allign: middle; } /* OR */ img { display: block; } ```