# 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