在 CSS 中,display 屬性是用來控制元素,如何在頁面中進行佈局顯示的關鍵屬性。
不同的 display 值決定了元素是否作為塊級元素、行內元素,還是其他方式進行渲染。
理解 display 屬性是掌握網頁佈局的第一步。
本篇文章將詳細介紹 display 屬性的基本概念、常見的 display 值,以及 HTML 標籤的預設 display 屬性。
什麼是 display 屬性?
display 屬性控制元素在頁面上的顯示方式,它決定了元素是以 塊級元素(Block-Level Element)、行內元素(Inline Element) 還是其他佈局模式呈現。
不同的 display 值可以改變元素的佈局行為、參與排版的方式,進而影響它與其他元素的關係。
display 的常見值包括:
blockinlineinline-blocknoneflexgrid- 更多其他的值如
table、list-item等。
常見的 display 值
block(塊級元素)
當一個元素的 display 設置為 block 時,它會作為塊級元素呈現,這意味著該元素會獨占一行,並且自動擴展到與其父容器同寬。塊級元素可以包含寬度、高度、內距和外距等屬性。
範例:
div {
display: block;
}在這裡,div 元素作為塊級元素,會自動佔滿父容器的寬度,並且上下方會與其他元素隔開。
常見預設為 block 的 HTML 標籤:
<div><p><h1>–<h6><section><article><header><footer>
inline(行內元素)
inline 顯示的元素稱為行內元素,這種元素不會佔據整行,它只佔據其內容所需的寬度,並且可以與其他行內元素排在同一行。
行內元素不能設置寬度和高度,也無法影響垂直方向的 margin 和 padding。
範例:
span {
display: inline;
}在這裡,span 元素作為行內元素,會在行內顯示,與其他行內元素並排,不會自動換行。
常見預設為 inline 的 HTML 標籤:
<span><a><em>(斜體)<strong>(加粗)<img>(圖片也屬於行內元素)
inline-block
inline-block 是介於 inline 和 block 之間的一種模式。
使用 inline-block 的元素像行內元素一樣與其他元素並排,但它的外觀和行為則像塊級元素,可以設置寬度、高度、內距和外距。
範例:
button {
display: inline-block;
width: 100px;
height: 50px;
}在這裡,button 元素會像行內元素一樣與其他元素並排,但可以設置寬高。
none
當 display 設置為 none 時,元素將被完全從文檔流中移除,既不佔用空間,也不會顯示在頁面上。
這與設置 visibility: hidden 不同,none 會讓元素完全消失,而 visibility: hidden 則僅隱藏元素,但保留其佔用的空間。
範例:
div {
display: none;
}這段程式碼會使 div 元素在頁面上完全不可見,也不佔用任何空間。
flex(彈性佈局)
flex 是一種強大的佈局模式,允許我們創建靈活的響應式布局。
當一個容器的 display 設置為 flex,它的子元素會根據 flex 規則進行排列和調整。
flex 支持橫向或縱向排列、換行、自動伸縮等功能。
範例:
.container {
display: flex;
}這會將 .container 設置為一個彈性容器,裡面的子元素會根據 flex 規則自動排列。
常見的 flex 屬性包括:
justify-content:控制主軸上的對齊方式。align-items:控制交叉軸上的對齊方式。flex-wrap:控制子元素是否換行。
grid(網格佈局)
grid 是另一個強大的佈局模式,用來創建基於網格的兩維佈局。
當一個容器設置為 grid 佈局,它的子元素會根據行和列來排列,可以精確控制元素的大小、間距和位置。
範例:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}這段程式碼將 .container 設置為一個三列的網格佈局,每一列的寬度都會相等。
常見的 grid 屬性包括:
grid-template-columns:設置列數和列寬。grid-template-rows:設置行數和行高。grid-gap:控制行與列之間的間距。
新手常犯的錯誤
誤用 inline 和 block 元素
新手常常混淆 inline 和 block 元素之間的區別,例如嘗試為行內元素(如 <span>)設置寬度或高度,卻發現無效。
這是因為行內元素不能直接設置寬度和高度。
解決方案
可以將 inline 元素設置為 inline-block,這樣就可以為它設置寬度和高度,同時保持行內排列行為。
忘記 display: none 會完全移除元素
使用 display: none 會讓元素從文檔流中完全消失,並且不佔據空間。
新手有時會誤以為這只是隱藏元素,卻不知道它會影響佈局和排版。
解決方案
如果只是想隱藏元素,但希望它依然佔據空間,可以使用 visibility: hidden。
結論
display 屬性是控制元素在頁面上如何顯示的關鍵屬性,理解它的不同值對於構建靈活的網頁佈局至關重要。
無論是使用 block、inline,還是進階的 flex 和 grid,掌握 display 屬性能讓你的設計更具結構性和可控制性。
通過這篇文章的介紹,希望你對 CSS display 屬性有了清晰的理解,並能夠靈活應用到你的網頁設計中。