深入學習HTML5語義化標籤、屬性使用和最佳實踐,讓你的網頁更專業!
語義化標籤不只是讓程式碼更好讀,更重要的是讓搜尋引擎、螢幕閱讀器等工具能更好地理解網頁結構!
網站或文章的頭部區域
通常包含標題、Logo、主要導航等。可以在頁面中使用多次(如文章內的header)。
導航連結區域
專門用來包含導航連結,幫助使用者在網站中移動。可以是主導航、麵包屑或頁內導航。
主要內容區域
整個頁面的核心內容,每個頁面只能有一個main標籤,不能放在header、footer、nav或aside內。
獨立的文章內容
可以獨立存在的內容,如部落格文章、新聞報導、評論等。移除周圍內容後仍然有意義。
文檔中的區段
按主題分組的內容,通常有標題。用來將相關內容組織在一起,比div更有語義。
側邊相關內容
與主要內容相關但不是核心的內容,如側邊欄、廣告、相關連結等。
頁腳區域
包含頁面或區段的結尾資訊,如版權聲明、聯絡資訊、相關連結等。
圖片與說明文字
figure包含圖片、圖表等媒體內容,figcaption提供說明文字。兩者配合使用。
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<title>我的部落格</title>
</head>
<body>
<!-- 網站頭部 -->
<header>
<h1>小明的科技部落格</h1>
<p>分享程式設計和科技新知</p>
</header>
<!-- 主要導航 -->
<nav>
<ul>
<li><a href="#home">首頁</a></li>
<li><a href="#articles">文章</a></li>
<li><a href="#about">關於我</a></li>
<li><a href="#contact">聯絡</a></li>
</ul>
</nav>
<!-- 主要內容區域 -->
<main>
<!-- 文章區段 -->
<section id="articles">
<h2>最新文章</h2>
<!-- 單篇文章 -->
<article>
<header>
<h3>學習HTML5語義化標籤</h3>
<p>發布於 2024年8月2日 由 小明</p>
</header>
<p>今天要來分享HTML5的語義化標籤...</p>
<figure>
<img src="html5-semantic.jpg" alt="HTML5語義化標籤示意圖">
<figcaption>圖1:HTML5語義化標籤結構圖</figcaption>
</figure>
<p>使用語義化標籤的好處包括...</p>
<footer>
<p>標籤:HTML5, 網頁設計, 前端開發</p>
</footer>
</article>
</section>
</main>
<!-- 側邊欄 -->
<aside>
<section>
<h3>關於作者</h3>
<p>我是小明,一個熱愛程式設計的高中生...</p>
</section>
<section>
<h3>熱門文章</h3>
<ul>
<li><a href="#">CSS Grid布局完全指南</a></li>
<li><a href="#">JavaScript ES6新特性</a></li>
</ul>
</section>
</aside>
<!-- 網站頁腳 -->
<footer>
<p>© 2024 小明的科技部落格. 版權所有.</p>
<nav>
<a href="#privacy">隱私政策</a> |
<a href="#terms">使用條款</a>
</nav>
</footer>
</body>
</html>
<div class="header">
<div class="title">網站標題</div>
</div>
<div class="navigation">
<div class="menu-item">首頁</div>
<div class="menu-item">關於</div>
</div>
<div class="content">
<div class="post">
<div class="post-title">文章標題</div>
<div class="post-content">文章內容...</div>
</div>
</div>
<div class="footer">
<div>版權資訊</div>
</div>
問題:
<header>
<h1>網站標題</h1>
</header>
<nav>
<ul>
<li><a href="#">首頁</a></li>
<li><a href="#">關於</a></li>
</ul>
</nav>
<main>
<article>
<h2>文章標題</h2>
<p>文章內容...</p>
</article>
</main>
<footer>
<p>版權資訊</p>
</footer>
優點:
<!-- 每個頁面中,id必須是唯一的 -->
<div id="main-content">主要內容區域</div>
<h1 id="page-title">頁面標題</h1>
<button id="submit-btn">提交按鈕</button>
<!-- CSS中使用id選擇器 -->
<style>
#main-content {
background-color: #f8f9fa;
padding: 20px;
}
#page-title {
color: #e74c3c;
font-size: 2rem;
}
</style>
<!-- JavaScript中選取元素 -->
<script>
document.getElementById('submit-btn').addEventListener('click', function() {
alert('按鈕被點擊了!');
});
</script>
<!-- class可以重複使用,一個元素可以有多個class -->
<div class="card featured-card">特色卡片</div>
<div class="card">普通卡片</div>
<div class="card sale-card">促銷卡片</div>
<p class="text-large text-bold text-red">大字體粗體紅色文字</p>
<!-- CSS中使用class選擇器 -->
<style>
.card {
border: 1px solid #ddd;
border-radius: 8px;
padding: 16px;
margin: 8px 0;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.featured-card {
border-color: #e74c3c;
background-color: #fff5f5;
}
.text-large { font-size: 1.2rem; }
.text-bold { font-weight: bold; }
.text-red { color: #e74c3c; }
</style>
大字體粗體紅色文字
<!-- 圖片的src屬性 --> <img src="images/logo.png" alt="網站Logo"> <img src="https://example.com/photo.jpg" alt="外部圖片"> <img src="../assets/banner.jpg" alt="相對路徑圖片"> <!-- 其他使用src的標籤 --> <script src="js/main.js"></script> <iframe src="https://www.youtube.com/embed/video-id"></iframe> <audio src="music/song.mp3" controls></audio> <video src="videos/demo.mp4" controls></video> <!-- 路徑類型說明 --> <!-- 絕對路徑:https://example.com/image.jpg --> <!-- 相對路徑:./images/photo.jpg 或 images/photo.jpg --> <!-- 上層目錄:../assets/logo.png -->
注意:圖片無法載入時,會顯示alt屬性的文字
<!-- 好的alt文字範例 -->
<img src="cat.jpg" alt="一隻橘色的小貓坐在窗台上曬太陽">
<img src="chart.png" alt="2024年網站流量成長圖表,顯示流量增加了25%">
<img src="logo.png" alt="ABC公司官方標誌">
<!-- 裝飾性圖片可以使用空的alt -->
<img src="decoration.png" alt="">
<!-- 錯誤的alt文字範例 -->
<img src="photo.jpg" alt="照片"> <!-- 太模糊 -->
<img src="image1.jpg" alt="image1.jpg"> <!-- 檔名不是描述 -->
<img src="click-here.png" alt="點擊這裡"> <!-- 應該描述目的地 -->
<!-- 正確的連結圖片alt -->
<a href="products.html">
<img src="products-btn.png" alt="瀏覽產品頁面">
</a>
使用螢幕閱讀器時,好的alt文字讓視障使用者能理解圖片內容:
滑鼠懸停時顯示的提示文字,提供額外資訊。
<a href="#" title="在新視窗開啟">連結</a>
儲存自訂資料,常用於JavaScript操作。
<div data-user-id="123" data-role="admin"></div>
超連結的目標位址,可以是網址、錨點或其他資源。
<a href="https://example.com">外部連結</a>
在新視窗或新分頁開啟連結。
<a href="#" target="_blank">新視窗開啟</a>
表單輸入欄位的提示文字。
<input type="text" placeholder="請輸入您的姓名">
表單欄位必填屬性,不需要值。
<input type="email" required>
<!-- 正確的標籤關閉 -->
<div>
<p>這是段落內容</p>
<ul>
<li>清單項目1</li>
<li>清單項目2</li>
</ul>
</div>
<!-- 自閉合標籤 -->
<img src="photo.jpg" alt="照片" />
<br />
<hr />
為什麼重要:防止布局錯亂,確保網頁正常顯示
<!-- 錯誤:忘記關閉標籤 -->
<div>
<p>這是段落內容
<ul>
<li>清單項目1
<li>清單項目2
</ul>
<!-- 忘記關閉div -->
後果:可能導致樣式錯亂、JavaScript失效
<!-- 語義清楚的結構 -->
<article>
<header>
<h1>文章標題</h1>
<time datetime="2024-08-02">2024年8月2日</time>
</header>
<section>
<h2>章節標題</h2>
<p>章節內容...</p>
</section>
<footer>
<p>作者:小明</p>
</footer>
</article>
好處:SEO友善、無障礙支援、程式碼易讀
<!-- 缺乏語義的結構 -->
<div class="article">
<div class="header">
<div class="title">文章標題</div>
<div class="date">2024年8月2日</div>
</div>
<div class="content">
<div class="section-title">章節標題</div>
<div class="text">章節內容...</div>
</div>
</div>
問題:搜尋引擎難以理解、無障礙性差
<!-- 清楚的縮排結構 -->
<nav>
<ul>
<li>
<a href="#home">首頁</a>
</li>
<li>
<a href="#about">關於</a>
<ul>
<li><a href="#team">團隊</a></li>
<li><a href="#history">歷史</a></li>
</ul>
</li>
</ul>
</nav>
好處:易於閱讀、除錯容易、團隊協作友善
<!-- 難以閱讀的格式 --> <nav><ul><li><a href="#home">首頁</a></li><li><a href="#about">關於</a> <ul><li><a href="#team">團隊</a></li> <li><a href="#history">歷史</a></li></ul></li></ul></nav>
問題:難以維護、容易出錯、影響團隊效率
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="學習HTML5語義化標籤的完整指南">
<title>HTML5語義化標籤完全指南 - 小明的技術部落格</title>
</head>
<body>
<!-- 網站頭部 -->
<header role="banner">
<nav role="navigation" aria-label="主要導航">
<h1>小明的技術部落格</h1>
<ul>
<li><a href="#home">首頁</a></li>
<li><a href="#articles">文章</a></li>
<li><a href="#about">關於我</a></li>
<li><a href="#contact">聯絡</a></li>
</ul>
</nav>
</header>
<!-- 主要內容 -->
<main role="main">
<!-- 麵包屑導航 -->
<nav aria-label="麵包屑導航">
<ol>
<li><a href="#home">首頁</a></li>
<li><a href="#frontend">前端開發</a></li>
<li><a href="#html">HTML</a></li>
<li aria-current="page">語義化標籤</li>
</ol>
</nav>
<!-- 文章內容 -->
<article>
<header>
<h1>HTML5語義化標籤完全指南</h1>
<p class="article-meta">
<time datetime="2024-08-02T10:30:00+08:00">
2024年8月2日 上午10:30
</time>
由 <address><a href="#author">小明</a></address> 撰寫
</p>
<p class="article-summary">
本文將深入探討HTML5語義化標籤的使用方法,
幫助你建立更好的網頁結構和提升SEO效果。
</p>
</header>
<!-- 目錄 -->
<nav aria-label="文章目錄">
<h2>文章目錄</h2>
<ol>
<li><a href="#intro">什麼是語義化標籤</a></li>
<li><a href="#benefits">語義化標籤的好處</a></li>
<li><a href="#examples">常用標籤範例</a></li>
<li><a href="#conclusion">總結</a></li>
</ol>
</nav>
<!-- 文章段落 -->
<section id="intro">
<h2>什麼是語義化標籤</h2>
<p>
語義化標籤是HTML5引入的新特性,
讓網頁結構更加清楚和有意義...
</p>
<figure>
<img src="semantic-html-structure.png"
alt="HTML5語義化標籤結構示意圖,顯示header、nav、main、article、section、aside和footer的關係">
<figcaption>
圖1:HTML5語義化標籤結構示意圖
</figcaption>
</figure>
</section>
<section id="benefits">
<h2>語義化標籤的好處</h2>
<p>使用語義化標籤帶來以下好處:</p>
<ul>
<li><strong>SEO優化</strong>:搜尋引擎更容易理解頁面結構</li>
<li><strong>無障礙性</strong>:螢幕閱讀器能更好地解讀內容</li>
<li><strong>程式碼可讀性</strong>:開發者更容易維護程式碼</li>
<li><strong>未來兼容性</strong>:符合網頁標準的發展趨勢</li>
</ul>
<blockquote cite="https://www.w3.org/standards/">
<p>
"語義化的HTML是網頁無障礙和SEO的基礎。"
</p>
<footer>
— <cite>W3C網頁標準組織</cite>
</footer>
</blockquote>
</section>
<section id="examples">
<h2>常用標籤範例</h2>
<p>以下是一些常用的語義化標籤範例:</p>
<details>
<summary>點擊查看代碼範例</summary>
<pre><code>
<article>
<header>
<h1>文章標題</h1>
</header>
<p>文章內容...</p>
<footer>
<p>作者資訊</p>
</footer>
</article>
</code></pre>
</details>
</section>
<section id="conclusion">
<h2>總結</h2>
<p>
語義化標籤是現代網頁開發的重要基礎,
正確使用能帶來SEO、無障礙和維護性的多重好處...
</p>
</section>
<!-- 文章頁腳 -->
<footer>
<p>文章標籤:
<a href="#html" rel="tag">HTML5</a>、
<a href="#semantic" rel="tag">語義化</a>、
<a href="#frontend" rel="tag">前端開發</a>
</p>
<p>
<a href="#share" title="分享這篇文章">分享</a> |
<a href="#comments" title="查看評論">評論 (5)</a> |
<a href="#print" title="列印文章">列印</a>
</p>
</footer>
</article>
<!-- 相關文章 -->
任務:使用語義化標籤建立一個個人履歷頁面
要求:
任務:為電商網站建立產品詳情頁面
要求:
任務:建立新聞網站的首頁布局
要求:
官方HTML驗證工具
檢查HTML語法錯誤和標準合規性
🔗 validator.w3.org
文檔結構分析工具
檢查標題層次和文檔大綱結構
🔗 在線工具
無障礙檢測工具
檢查無障礙問題和改進建議
🔗 wave.webaim.org
瀏覽器開發者工具
檢查HTML結構和除錯
F12 或右鍵「檢查」開啟
現在你已經掌握了語義化標籤、屬性使用和最佳實踐, 可以建立更專業、更具語義的網頁結構了!