---
# System prepended metadata

title: Front End -- HTML
tags: [web develope]

---

# Front End -- HTML
###### tags: `web develope`

HTML, Hypertext Markup Language，是標記語言，不是程式語言。

## 最基本的 HTML 網頁結構範例
```htmlembedded= 
<!DOCTYPE html> <!--宣告-->
<html>
  <head>
    <!-- 網頁的資訊 -->
  </head>
  <body>
    <!-- 網頁的內容 -->
  </body>
</html>
```
### <!DOCTYPE>
第一行是一個「宣告」： **<!DOCTYPE html> 告訴瀏覽器這份文件是一個 HTML5** 的網頁，瀏覽器因而知道要怎麼用正確的方式來展示你的網頁。請注意宣告要寫在第一行，因為瀏覽器是一行一行讀取文件的，想愈早告訴他的資訊，請寫在愈上面。

### <html></html>
包住了整個網頁，表示這是一份 HTML 文件。被 <html> </html>包圍的內容，我們稱為網頁「元素」(element)。一份完整的 HTML 文件，必然會在 <html> </html>裡包含 <head></head> 和 <body> </body>兩個網頁元素。

### <head></head>
包圍的資訊稱為「標頭」，<head></head> 裡宣告各種網頁資訊，**這些資訊不會顯示給使用者看**，因為它們的**溝通對象是瀏覽器與其他的網路服務**，如 Google 搜索引擎，Facebook 等。<head></head> 宣告的資訊包括網頁標題、外部連結、網頁樣式、JavaScript 腳本、meta tag⋯⋯等。我們在以後的章節會有更詳細的介紹。
```htmlembedded=
<head>
  <title>歡迎來到 ALPHA CAMP！</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
```

加入上述< meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 在 <head>標籤內，表示要適應各種網路瀏覽器的編碼問題，如：IE瀏覽器預設文字編碼是BIG-5，我們在這邊先宣告統一使用utf-8編碼，解決使用不同瀏覽器會看到亂碼的問題。</head>

### <body></body>

包圍的內容是會直接顯示給使用者看的內容，也是這個網頁的核心。需要 CSS 來定義樣式的內容，也都會放在 body 裡面：

### <!-- -->

「註解」(Comment) 裡的東西會被機器直接跳過，通常是工程師協作時交流的注意事項，或是自己的備忘。例如：

<!-- 在這裡我們會埋 Facebook 廣告的追蹤碼 Here we will put Facebook ad pixel -->

HTML 與 Markup

其實他是一個「標記」 (markup) 的概念。HTML 的繪寫是 "Hypertext Markup Language." 而 "markup" 的意思跟用螢光筆劃記的感覺很像，把文字標記起來，賦予某種特性。


請你試試在編輯器寫出以下的五段文字，再用瀏覽器去看看：
```htmlembedded=
    Results
    <h1>Results</h1> are impressive!
    <h4>Results</h4> are impressive!
    <p>Results</p> are impressive!
    <strong>Results</strong> are impressive!
```
## 語法

![](https://uploads-ssl.webflow.com/5d3a7aed4e11720246d46f49/5ec79607a459c56fcc8aef40_5.png)
 
![](https://i.imgur.com/DnefWc7.png)

### 快速攻略 HTML 標籤 基本網頁元素

下面會先介紹最基本的標籤，隨著學習HTML的進展，你會陸續認識新的標籤：

    標題：h1, h2, h3, h4, h5, h6
    文字段落：p
    清單：ul, ol, li
    強調語氣：em, strong
    換行：br
    水平線：hr
    超連結：a
    圖片：img
    區域：div, span
    表格：table, tr, th, td
    表單：form, label, input

除了 img 標籤外，header、nav、main 和 section 是語義元素 (semantic element)，也就是「有意義的元素」，能讓搜尋引擎辨識出正確的網頁內容。

常見的 HTML elements
![](https://i.imgur.com/Tb5zW05.png)
上圖轉換成html格式：
```htmlembedded=

<h1></h1>我要學會HTML！
<p></p>動手做是最好的學習方法。<p></p>

<h2></h2>清單 Lists

<p></p>這是沒有順序的項目符號清單<p></p>

<ul></ul><!-- unordered list -->
<li></li>這是沒有順序的清單
<li></li>以 ul 元來定義清單的範圍
<li></li>用 li 標示各別項目

<p></p>這是有數字順序的清單<p></p>

<ol></ol><!-- ordered list -->
<li></li>這是有順序的清單
<li></li>以 ol 元來定義清單的範圍
<li></li>一樣用 li 標示各別項目


<h2></h2>行內元素

<p></p>校長說：Coding 哪裡都可以學，真正重要的是你的 <em></em>Mindset！<p></p>
<p></p>再說一次：Coding 哪裡都可以學，真正重要的是你的 <strong></strong>Mindset！<p></p>
<p><em><strong></strong></em></p>You need to get it done！<p></p>

<h2></h2>空元素

<p></p>祝你在大航道學習愉快！<br>
   ALPHA Camp<p></p>
<hr>
<p></p>恭喜你學完了 HTML 基本元素，就是這麼簡單！<p></p>
```
:::success

請注意 \<li> 元素必然被放在 \<ul> 或 \<ol> 的下一層，這是 Mozilla Developer Network (MDN) 制定的標準。
清單的巢狀特性，讓他們特別適合被改造成網站的導覽選單 (navigation)，學會 CSS 以後，你將會知道怎麼做。
:::
在 HTML 我們一般會用兩種方法來強調需要強調的內容

    Emphasis (斜體)： <em></em>
    Strong (粗體)： <strong></strong>

有別於一次佔一行的叫「區塊元素」(block elements)，此為「行內元素」(inline elements)，在後面的 CSS 章節你會深入認識兩者的區分。
:::info

空元素 (Empty elements)

絕大多數的 HTML 標籤都是成對出現，具有開始與結束，以巢狀結構包圍內容，定義出一個區塊。
但某些元素無法包圍任何內容，因此他們被稱為「空元素」(empty element)。最常見的空元素是**斷行**以及**水平線**。

:::
## 詳細的 HTML 標籤
**格式化**
|标签| 	描述|
|-----|------|
|\<acronym>| 	定义只取首字母的缩写。HTML5 中不支持。请使用 \<abbr> 代替。|
|\<abbr>| 	定义缩写。|
|\<address>| 	定义文档作者或拥有者的联系信息。|
|\<b>| 	定义粗体文本。|
|\<bdi>| 	定义文本的文本方向，使其脱离其周围文本的方向设置。|
|\<bdo>| 	定义文字方向。|
|\<big>| 	定义大号文本。HTML5 中不支持。请使用 CSS 代替。|
|\<blockquote>| 	定义长的引用。|
|\<center>| 	定义大号文本。HTML5 中不支持。请使用 CSS 代替。|
|\<cite>| 	定义引用(citation)。|
|\<code>| 	定义计算机代码文本。|
|\<del>| 	定义被删除文本。|
|\<dfn>| 	定义定义项目。|
|\<em>| 	定义强调文本。|
|\<font>| 	定义大号文本。HTML5 中不支持。请使用 CSS 代替。|
|\<i>| 	定义斜体文本。|
|\<ins>| 	定义被插入文本。|
|\<kbd>| 	定义键盘文本。|
|\<mark>| 	定义有记号的文本。|
|\<meter>| 	定义预定义范围内的度量。|
|\<pre>| 	定义预格式文本。|
|\<progress>| 	定义任何类型的任务的进度。|
|\<q>| 	定义短的引用。|
|\<rp>| 	定义若浏览器不支持 ruby 元素显示的内容。|
|\<rt>| 	定义 ruby 注释的解释。|
|\<ruby>| 	定义 ruby 注释。|
|\<s>| 	定义加删除线的文本。|
|\<samp>| 	定义计算机代码样本。|
|\<small>| 	定义小号文本。|
|\<strike>| 	定义加删除线文本。HTML5 中不支持。请使用 \<del> 或 \<s> 代替。|
|\<strong>| 	定义语气更为强烈的强调文本。|
|\<sup>| 	定义上标文本。|
|\<sub>| 	定义下标文本。|
|\<template>| 	定义用作容纳页面加载时隐藏内容的容器。|
|\<time>| 	定义日期/时间。|
|\<tt>| 	定义打字机文本。HTML5 中不支持。请使用 CSS 代替。|
|\<u>| 	定义下划线文本。|
|\<var>| 	定义文本的变量部分。|
|\<wbr>| 	定义可能的换行符。|
**表单和输入**
|标签| 	描述|
|-----|------|
|\<form>| 	定义供用户输入的 HTML 表单。|
|\<input>| 	定义输入控件。|
|\<textarea>| 	定义多行的文本输入控件。|
|\<button>| 	定义按钮。|
|\<select>| 	定义选择列表（下拉列表）。|
|\<optgroup>| 	定义选择列表中相关选项的组合。|
|\<option>| 	定义选择列表中的选项。|
|\<label>| 	定义 input 元素的标注。|
|\<fieldset>| 	定义围绕表单中元素的边框。|
|\<legend>| 	定义 fieldset 元素的标题。|
|\<isindex>| 	定义与文档相关的可搜索索引。HTML5 中不支持。|
|\<datalist>| 	定义下拉列表。|
|\<keygen>| 	定义生成密钥。|
|\<output>| 	定义输出的一些类型。|
**框架**
|标签| 	描述|
|-----|------|
|\<frame>| 	定义框架集的窗口或框架。HTML5 中不支持。|
|\<frameset>| 	定义框架集。HTML5 中不支持。|
|\<noframes>| 	定义针对不支持框架的用户的替代内容。HTML5 中不支持。|
|\<iframe>| 	定义内联框架。|
**图像**
|标签| 	描述|
|-----|------|
|\<img>| 	定义图像。|
|\<map>| 	定义图像映射。|
|\<area>| 	定义图像地图内部的区域。|
|\<canvas>| 	定义图形。|
|\<figcaption>| 	定义 figure 元素的标题。|
|\<figure>| 	定义媒介内容的分组，以及它们的标题。|
|\<svg>| 	定义 SVG 图形的容器。|
**音频/视频**
|标签| 	描述|
|-----|------|
|\<audio>| 	定义声音内容。|
|\<source>| 	定义媒介源。|
|\<track>| 	定义用在媒体播放器中的文本轨道。|
|\<video>| 	定义视频。|
**链接**
|标签| 	描述|
|-----|------|
|\<a>| 	定义锚。|
|\<link>| 	定义文档与外部资源的关系。|
|\<nav>| 	定义导航链接。|
**列表**
|标签| 	描述|
|-----|------|
|\<ul>| 	定义无序列表。|
|\<ol>| 	定义有序列表。|
|\<li>| 	定义列表的项目。|
|\<dir>| 	定义大号文本。HTML5 中不支持。请使用 CSS 代替。|
|\<dl>| 	定义定义列表。|
|\<dt>| 	定义定义列表中的项目。|
|\<dd>| 	定义定义列表中项目的描述。|
|\<menu>| 	定义命令的菜单/列表。|
|\<menuitem>| 	定义用户可以从弹出菜单调用的命令/菜单项目。|
|\<command>| 	定义命令按钮。|
**表格**
|标签| 	描述|
|-----|------|
|\<table>| 	定义表格
|\<caption>| 	定义表格标题。|
|\<th>| 	定义表格中的表头单元格。|
|\<tr>| 	定义表格中的行。|
|\<td>| 	定义表格中的单元。|
|\<thead>| 	定义表格中的表头内容。|
|\<tbody>| 	定义表格中的主体内容。|
|\<tfoot>| 	定义表格中的表注内容（脚注）。|
|\<col>| 	定义表格中一个或多个列的属性值。|
|\<colgroup>| 	定义表格中供格式化的列组。|
**样式和语义**
|标签| 	描述|
|-----|------|
|\<style>| 	定义文档的样式信息。|
|\<div>| 	定义文档中的节。|
|\<span>| 	定义文档中的节。|
|\<header>| 	定义 section 或 page 的页眉。|
|\<footer>| 	定义 section 或 page 的页脚。|
|\<main>| 	定义文档的主要内容。|
|\<section>| 	定义 section。|
|\<article>| 	定义文章。|
|\<aside>| 	定义页面内容之外的内容。|
|\<details>| 	定义元素的细节。|
|\<dialog>| 	定义对话框或窗口。|
|\<summary>| 	为 \<details> 元素定义可见的标题。|
|\<data>| 	添加给定内容的机器可读翻译。|
**元信息**
|标签| 	描述|
|-----|------|
|\<head>| 	定义关于文档的信息。|
|\<meta>| 	定义关于 HTML 文档的元信息。|
|\<base>| 	定义页面中所有链接的默认地址或默认目标。|
|\<basefont>| 	定义页面中文本的默认字体、颜色或尺寸。HTML5 中不支持。请使用 CSS 代替。|
**编程**
|标签| 	描述|
|-----|------|
|\<script>| 	定义客户端脚本。|
|\<noscript>| 	定义针对不支持客户端脚本的用户的替代内容。|
|\<applet>| 	定义嵌入的 applet。HTML5 中不支持。请使用 \<embed> 和 \<object> 代替。|
|\<embed>| 	为外部应用程序（非 HTML）定义容器。|
|\<object>| 	定义嵌入的对象。|
|\<param>| 	定义对象的参数。|
### Source & Material
https://tw.alphacamp.co/blog/html-guide
https://www.w3school.com