iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

什麼是display

在第七天,我們曾提到網頁元件可以被分為「區塊家族(像div、p)」與「行內家族(像span、a)」,當時我們了解到有些標籤會霸道地獨佔一整行,有些則會排在同一行。

到了CSS的世界,決定元件究竟要扮演站一整排的區塊還是可以排在同一行內的區塊,關鍵就是 display(元素顯示模式)屬性,透過調整display,我們可以改變元件的排列基因與幾何特性,今天我們將介紹於前端開發最基礎、也最常遇到的三大模式:block、inline 與 inline-block。


三大模式的觀念

1.display:block;(區塊模式)

這是所有區塊元素的預設基因。

  • 排列特性:元件會獨佔一整行,右邊不允許站任何人,後續的東西一律被強迫換行。
  • 尺寸特性:你可以自由設定寬度(width)與高度(height),如果沒有設定寬度,預設會自動填滿父容器的100%寬度,內邊距(Padding)與外邊距(Margin)在四個方向都能運作。

2. display:inline;(行內模式)

這是所有行內文字標籤的預設基因。

  • 排列特性:元件不會自動換行,多個元件會在同一行內水平排列,直到空間不夠才會換行。
  • 尺寸特性:無法設定寬度與高度,它的尺寸完全由裡面的內文長度撐開,更需要注意的是,雖然它能設定左右的Padding與Margin,但垂直方向(上下)的Padding與Margin沒辦法正常推開其他元件。

3. display: inline-block;(行內區塊模式)

這是一種結合了前兩者優點的特別模式,也是網頁排版極其常用的模式。

  • 排列特性:它具備inline的特性,不會自動換行,可以多個元件在同一行內並排呈現。
  • 尺寸特性:它同時繼承了block的強大能力,可以自由設定寬度與高度,且上下左右的Padding與Margin都能精準推開空間,這在製作導覽列的按鈕、電商的商品卡片時非常實用。

範例

<!DOCTYPE html>
<html lang="zh-Hant">
<head>
    <meta charset="UTF-8">
    <title>Day14 display 對比範例</title>
    <style>
        .base {
            width: 150px;
            height: 50px;
            margin: 10px;
            background-color: #34495e;
            color: white;
            text-align: center;
        }

        /* 區塊模式 */
        .block-mode {
            display: block;
        }

        /* 行內模式(設定的寬高將會失效) */
        .inline-mode {
            display: inline;
            background-color: #e74c3c; 
        }

        /* 行內區塊模式(可並排,又有寬高) */
        .inline-block-mode {
            display: inline-block;
            background-color: #2ecc71; 
        }
    </style>
</head>
<body>

    <h2>1. 區塊模式 (block):獨佔一行</h2>
    <div class="base block-mode">區塊 A</div>
    <div class="base block-mode">區塊 B</div>

    <h2>2. 行內模式 (inline):無法設定寬高</h2>
    <div class="base inline-mode">行內 A</div>
    <div class="base inline-mode">行內 B</div>

    <h2>3. 行內區塊模式 (inline-block):可並排且保有寬高</h2>
    <div class="base inline-block-mode">行內區塊</div>
    <div class="base inline-block-mode">行內區塊</div>

</body>
</html>

image

在執行上面程式碼後,你可以明顯地看到:
1.第一組區塊雖然很短,但B依然被擠到了下一行。
2.第二組紅色的行內元素緊貼在一起,且我們給的width: 150px與 height: 50px完全被忽略了。
3.第三組綠色的行內區塊在同一行水平並排,並且維持著我們設定的長方形大小。


總結

今天我們釐清了display屬性的初階三大排列觀念(block、inline、inline-block),這讓我們可以打碎標籤的限制,決定元件要如何並排或換行。

在明天,我們將迎來 CSS排版中專門用來處理「圖文圍繞」或是「傳統左右並排」的另一個經典屬性:浮動(Float),去看看在現代大框架流行之前,工程師是怎麼用浮動來幫網頁分左右邊的。


上一篇
DAY13 box-sizing與border-box
下一篇
DAY15 Float、Overflow與flex
系列文
從結構到互動:現代前端HTML、CSS 、JS 的 30 天修練 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言