Skip to content

HTML 區塊容器 div:用途、時機與語意化取捨

HTML 區塊容器 div:沒有語意的區塊層級容器

無任何語意,用來歸類區域的資訊,亦可包覆其他元素使用,方便套用 CSS 或以 JavaScript 操作。它是區塊層級元素,會自己佔一整行;動手前先想想有沒有 <header><main><section> 這類更合適的元素。

html
<div>
  <h2>UI/UX Team Lead</h2>
  <p>3 年以上 APP/Web 產品設計經驗。</p>
  <p>熟悉 Figma 應用,請提供設計過程和成果的作品集,讓我們更好地了解您的能力。</p>
  <p>具有設計面向消費者的 2C 產品/服務的經驗,擅長創造簡單且愉悅的用戶體驗。</p>
  <p>具備良好的溝通和表達能力,能清楚表達想法、設計決策並提供建設性回饋。</p>
</div>

<div>
  <h2>UI/UX Designer</h2>
  <p>1 年以上 APP/Web 產品設計經驗。</p>
  <p>熟悉 Figma 應用,請提供設計過程和成果的作品集,讓我們更好地了解您的能力。</p>
  <p>曾參與設計面向消費者的 2C 產品/服務的經驗,擅長創造簡單且愉悅的用戶體驗。</p>
  <p>具備良好的溝通和表達能力,能清楚表達想法、互動交流並提供建設性回饋。</p>
</div>

它是區塊層級元素

<div> 預設會自己佔滿一整行,前後自動換行;相對地,行內容器 <span> 只包住文字本身,不會換行。

html
<div>我獨佔一行</div>
<div>我也獨佔一行</div>

<span>我們</span><span>會排在同一行</span>

適合使用的時機

  • 為了套用 CSS 版面(flex、grid)而需要一層容器。
  • 為了讓 JavaScript 好操作而需要一個 選取 目標。
  • 這一區在文件中確實沒有明確的語意角色。

先想想有沒有更合適的元素

上面的職缺範例,每一則其實都是可以獨立存在的內容,改用 <article> 更精準:

html
<!-- ❌ 什麼都用 div -->
<div class="header">
  <div class="nav">...</div>
</div>
<div class="main">
  <div class="job">...</div>
</div>
<div class="footer">...</div>

<!-- ✅ 有語意就用語意化元素 -->
<header>
  <nav>...</nav>
</header>
<main>
  <article>...</article>
</main>
<footer>...</footer>

小提醒

滿頁都是 <div> 的寫法俗稱 divitis,機器讀不出結構,維護的人也難以對應畫面。挑元素時請先問:這一區在文件中扮演什麼角色?

常見問題

div 和 span 有什麼不同?

兩者都沒有語意,差在顯示層級。<div> 是區塊層級,會自己佔一整行;<span> 是行內層級,只包住文字本身,適合標記段落中的某幾個字。

什麼時候該用 div,什麼時候該用語意化元素?

先問這一區在文件中扮演什麼角色。是 頁首導覽主要內容頁尾,就用對應的語意化元素;純粹只是為了套版面或做動畫而包的一層,才用 <div>

包太多層 div 有什麼壞處?

文件結構會變得又深又難讀,機器也讀不出任何語意。這種滿頁都是 <div> 的寫法俗稱 divitis,維護時光要找出某一層對應畫面的哪一塊就很費力。

延伸閱讀