aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/learn/html/introduction_to_html
diff options
context:
space:
mode:
Diffstat (limited to 'files/zh-cn/learn/html/introduction_to_html')
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/advanced_text_formatting/index.html632
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/creating_hyperlinks/index.html323
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/debugging_html/index.html179
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/getting_started/index.html683
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/html_text_fundamentals/index.html915
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/index.html67
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/marking_up_a_letter/index.html103
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/structuring_a_page_of_content/index.html104
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/the_head_metadata_in_html/index.html287
-rw-r--r--files/zh-cn/learn/html/introduction_to_html/文件和网站结构/index.html252
10 files changed, 3545 insertions, 0 deletions
diff --git a/files/zh-cn/learn/html/introduction_to_html/advanced_text_formatting/index.html b/files/zh-cn/learn/html/introduction_to_html/advanced_text_formatting/index.html
new file mode 100644
index 0000000000..cbeed8e8a0
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/advanced_text_formatting/index.html
@@ -0,0 +1,632 @@
+---
+title: 高阶文字排版
+slug: learn/HTML/Introduction_to_HTML/Advanced_text_formatting
+tags:
+ - 上下标
+ - 代码
+ - 引文
+ - 引用
+ - 描述列表
+ - 缩略语
+translation_of: Learn/HTML/Introduction_to_HTML/Advanced_text_formatting
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Creating_hyperlinks", "Learn/HTML/Introduction_to_HTML/文件和网站结构", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">HTML中有许多其他元素可以用于格式化文本,我们没有在<a href="https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理基础</a>中提到它们。本文中所描述的元素虽然少有人知,但仍然值得去学习(尽管仍然不是完整的列表)。在这里你将了解标记引文、描述列表、计算机代码和其他相关文本、下标和上标、联系信息等。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>熟悉 HTML 基础(包含在 <a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a> 中)、HTML 文本格式(包含在 <a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a> 中)。</td>
+ </tr>
+ <tr>
+ <th scope="row">目标:</th>
+ <td>学习一些不常见的 HTML 元素标记来使用高级语义功能。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="描述列表">描述列表</h2>
+
+<p>在 HTML 基础部分,我们讨论了如何在 HTML 中<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#列表_Lists">标记基本的列表</a>,但是我们没有提到你偶尔会遇到的第三种类型的列表—<strong>描述列表</strong> (description list) <strong>。</strong>这种列表的目的是标记一组项目及其相关描述,例如术语和定义,或者是问题和答案等。让我们看一组术语和定义的示例:</p>
+
+<pre class="notranslate">内心独白
+戏剧中,某个角色对自己的内心活动或感受进行念白表演,这些台词只面向观众,而其他角色不会听到。
+语言独白
+戏剧中,某个角色把自己的想法直接进行念白表演,观众和其他角色都可以听到。
+旁白
+戏剧中,为渲染幽默或戏剧性效果而进行的场景之外的补充注释念白,只面向观众,内容一般都是角色的感受、想法、以及一些背景信息等。</pre>
+
+<p>描述列表使用与其他列表类型不同的闭合标签— {{htmlelement("dl")}}; 此外,每一项都用 {{htmlelement("dt")}} (description term) 元素闭合。每个描述都用 {{htmlelement("dd")}} (description description) 元素闭合。让我们来完成下面的标记例子:</p>
+
+<pre class="brush: html notranslate">&lt;dl&gt;
+ &lt;dt&gt;内心独白&lt;/dt&gt;
+ &lt;dd&gt;戏剧中,某个角色对自己的内心活动或感受进行念白表演,这些台词只面向观众,而其他角色不会听到。&lt;/dd&gt;
+ &lt;dt&gt;语言独白&lt;/dt&gt;
+ &lt;dd&gt;戏剧中,某个角色把自己的想法直接进行念白表演,观众和其他角色都可以听到。&lt;/dd&gt;
+ &lt;dt&gt;旁白&lt;/dt&gt;
+ &lt;dd&gt;戏剧中,为渲染幽默或戏剧性效果而进行的场景之外的补充注释念白,只面向观众,内容一般都是角色的感受、想法、以及一些背景信息等。&lt;/dd&gt;
+&lt;/dl&gt;</pre>
+
+<p>浏览器的默认样式会在<strong>描述列表的描述部分</strong>(description description)和<strong>描述术语</strong>(description terms)之间产生缩进。MDN非常严密地遵循这一惯例,同时也鼓励关于术语的其他更多的定义(but also embolden the terms for extra definition)。</p>
+
+<p>下面是前述代码的显示结果:</p>
+
+<dl>
+ <dt>内心独白</dt>
+ <dd>戏剧中,某个角色对自己的内心活动或感受进行念白表演,这些台词只面向观众,而其他角色不会听到。</dd>
+ <dt>语言独白</dt>
+ <dd>戏剧中,某个角色把自己的想法直接进行念白表演,观众和其他角色都可以听到。</dd>
+ <dt>旁白</dt>
+ <dd>戏剧中,为渲染幽默或戏剧性效果而进行的场景之外的补充注释念白,只面向观众,内容一般都是角色的感受、想法、以及一些背景信息等。</dd>
+</dl>
+
+<p>请注意:一个术语 <code>&lt;dt&gt;</code> 可以同时有多个描述 <code>&lt;dd&gt;</code>,比如说:</p>
+
+<dl>
+ <dt>旁白</dt>
+ <dd>戏剧中,为渲染幽默或戏剧性效果而进行的场景之外的补充注释念白,只面向观众,内容一般都是角色的感受、想法、以及一些背景信息等。</dd>
+ <dd>写作中,指与当前主题相关的一段内容,通常不适于直接置于内容主线中,因此置于附近的其它位置(通常位于主线内容旁边一个文本框内)。</dd>
+</dl>
+
+<h3 id="主动学习_标记一组定义">主动学习: 标记一组定义</h3>
+
+<p>现在是时候尝试一下描述列表了; 在输入区域的原始文本里添加相应的元素,使得它在输出区域是以描述列表的形式出现。如果你喜欢,你也可以使用你自己的描述术语和描述。</p>
+
+<p>如果你做错了,你可以随时点击【重置】按钮。如果实在进行不下去,可以点击【显示答案】。</p>
+
+<div class="hidden">
+<h6 id="Playable_code">Playable code</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 160px; }
+ .input { min-height: 160px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original =
+`培根
+整个世界的粘合剂。
+鸡蛋
+一块蛋糕的粘合剂。
+咖啡
+一种浅棕色的饮料。
+可以在清晨带来活力。`;
+ const answer =
+`&lt;dl&gt;
+ &lt;dt&gt;培根&lt;/dt&gt;
+ &lt;dd&gt;整个世界的粘合剂。&lt;/dd&gt;
+ &lt;dt&gt;鸡蛋&lt;/dt&gt;
+ &lt;dd&gt;一块蛋糕的粘合剂。&lt;/dd&gt;
+ &lt;dt&gt;咖啡&lt;/dt&gt;
+ &lt;dd&gt;一种浅棕色的饮料。&lt;/dd&gt;
+ &lt;dd&gt;可以在清晨带来活力。&lt;/dd&gt;
+&lt;/dl&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code', 700, 500, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h2 id="引用">引用</h2>
+
+<p>HTML也有用于标记引用的特性,至于使用哪个元素标记,取决于你引用的是一块还是一行。</p>
+
+<h3 id="块引用">块引用</h3>
+
+<p>如果一个块级内容(一个段落、多个段落、一个列表等)从其他地方被引用,你应该把它用{{htmlelement("blockquote")}}元素包裹起来表示,并且在{{htmlattrxref("cite","blockquote")}}属性里用URL来指向引用的资源。例如,下面的例子就是引用的MDN的<code>&lt;blockquote&gt;</code>元素页面:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;The &lt;strong&gt;HTML &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt; Element&lt;/strong&gt; (or &lt;em&gt;HTML Block
+Quotation Element&lt;/em&gt;) indicates that the enclosed text is an extended quotation.&lt;/p&gt;</pre>
+
+<p>要把这些转换为块引用,我们要这样做:</p>
+
+<pre class="brush: html notranslate">&lt;blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote"&gt;
+ &lt;p&gt;The &lt;strong&gt;HTML &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt; Element&lt;/strong&gt; (or &lt;em&gt;HTML Block
+ Quotation Element&lt;/em&gt;) indicates that the enclosed text is an extended quotation.&lt;/p&gt;
+&lt;/blockquote&gt;</pre>
+
+<p>浏览器在渲染块引用时默认会增加缩进,作为引用的一个指示符;MDN是这样做的,但是也增加了额外的样式:</p>
+
+<blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote">
+<p>The <strong>HTML <code>&lt;blockquote&gt;</code> Element</strong> (or <em>HTML Block Quotation Element</em>) indicates that the enclosed text is an extended quotation.</p>
+</blockquote>
+
+<h3 id="行内引用">行内引用</h3>
+
+<p>行内元素用同样的方式工作,除了使用{{htmlelement("q")}}元素。例如,下面的标记包含了从MDN<code>&lt;q&gt;</code>页面的引用:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;The quote element — &lt;code&gt;&amp;lt;q&amp;gt;&lt;/code&gt; — is &lt;q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q"&gt;intended
+for short quotations that don't require paragraph breaks.&lt;/q&gt;&lt;/p&gt;
+</pre>
+
+<p>浏览器默认将其作为普通文本放入引号内表示引用,就像下面:</p>
+
+<p>The quote element — <code>&lt;q&gt;</code> — is <q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q">intended for short quotations that don't require paragraph breaks.</q>(&lt;q&gt;元素旨在用于不需要分段的短引用)</p>
+
+<h3 id="引文">引文</h3>
+
+<p>{{htmlattrxref("cite","blockquote")}}属性内容不会被浏览器显示、屏幕阅读器阅读,需使用 JavaScript 或 CSS,浏览器才会显示<code>cite</code>的内容。如果你想要确保引用的来源在页面上是可显示的,更好的方法是为{{htmlelement("cite")}}元素附上链接:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;According to the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote"&gt;
+&lt;cite&gt;MDN blockquote page&lt;/cite&gt;&lt;/a&gt;:
+&lt;/p&gt;
+
+&lt;blockquote cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote"&gt;
+ &lt;p&gt;The &lt;strong&gt;HTML &lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt; Element&lt;/strong&gt; (or &lt;em&gt;HTML Block
+ Quotation Element&lt;/em&gt;) indicates that the enclosed text is an extended quotation.&lt;/p&gt;
+&lt;/blockquote&gt;
+
+&lt;p&gt;The quote element — &lt;code&gt;&amp;lt;q&amp;gt;&lt;/code&gt; — is &lt;q cite="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q"&gt;intended
+for short quotations that don't require paragraph breaks.&lt;/q&gt; -- &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q"&gt;
+&lt;cite&gt;MDN q page&lt;/cite&gt;&lt;/a&gt;.&lt;/p&gt;
+</pre>
+
+<p>引文默认的字体样式为斜体。你可以在<a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/advanced-text-formatting/quotations.html">quotations.html</a>中参看代码。</p>
+
+<h3 id="主动学习:是谁说的?">主动学习:是谁说的?</h3>
+
+<p>到了主动学习的时间!在这个例子中我们想要你:</p>
+
+<ol>
+ <li>把中间的段落变成块引用,它要包含<code>cite</code>属性</li>
+ <li>把第三个段落的一部分变成行内引用,它要包含<code>cite</code>属性</li>
+ <li>每一个引用都要包含<code>&lt;cite&gt;</code>元素</li>
+</ol>
+
+<p>你需要的引用源:</p>
+
+<ul>
+ <li>http://www.brainyquote.com/quotes/authors/c/confucius.html 对应 "孔子曰"。</li>
+ <li>http://www.affirmationsforpositivethinking.com/ 对应 "不要说泄气的话"。</li>
+</ul>
+
+<p>如果你做错了,你可以随时点击【重置】按钮。如果实在进行不下去,可以点击【显示答案】。</p>
+
+<div class="hidden">
+<h6 id="Playable_code_2">Playable code 2</h6>
+
+<pre class="brush: html notranslate"><code>&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 160px; }
+ .input { min-height: 160px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original =
+`&lt;p&gt;你好!欢迎访问我的激励网页!孔子曰:&lt;/p&gt;
+&lt;p&gt;譬如为山,未成一篑,止,吾止也。譬如平地,虽覆一篑,进,吾往也。&lt;/p&gt;
+&lt;p&gt;要保持乐观,不要说泄气的话。(源自 Affirmations for Positive Thinking。)&lt;/p&gt;`;
+ const answer =
+`&lt;p&gt;你好!欢迎访问我的激励网页!&lt;a href="</code>http://www.brainyquote.com/quotes/authors/c/confucius.html<code>"&gt;&lt;cite&gt;孔子&lt;/cite&gt;&lt;/a&gt;曰:&lt;/p&gt;
+&lt;blockquote cite="https://zh.wikipedia.org/zh-hans/孔子"&gt;
+ &lt;p&gt;譬如为山,未成一篑,止,吾止也。譬如平地,虽覆一篑,进,吾往也。&lt;/p&gt;
+&lt;/blockquote&gt;
+&lt;p&gt;要保持乐观,&lt;q cite="http://www.affirmationsforpositivethinking.com/"&gt;不要说泄气的话&lt;/q&gt;。(源自 &lt;a href="http://www.affirmationsforpositivethinking.com/"&gt;&lt;cite&gt;Affirmations for Positive Thinking&lt;/cite&gt;&lt;/a&gt;。)&lt;/p&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</code></pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_2', 700, 500, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h2 id="缩略语">缩略语</h2>
+
+<p>另一个你在web上看到的相当常见的元素是{{htmlelement("abbr")}}——它常被用来包裹一个缩略语或缩写,并且提供缩写的解释(包含在{{htmlattrxref("title")}}属性中)。让我们看看下面两个例子:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;我们使用 &lt;abbr title="超文本标记语言(Hyper text Markup Language)"&gt;HTML&lt;/abbr&gt; 来组织网页文档。&lt;/p&gt;
+
+&lt;p&gt;第 33 届 &lt;abbr title="夏季奥林匹克运动会"&gt;奥运会&lt;/abbr&gt; 将于 2024 年 8 月在法国巴黎举行。&lt;/p&gt;
+</pre>
+
+<p>这些代码的显示效果如下(当光标移动到项目上时会出现提示):</p>
+
+<p>我们使用 <abbr title="超文本标记语言(Hypertext Markup Language)">HTML</abbr> 来组织网页文档。</p>
+
+<p>第 33 届 <abbr title="夏季奥林匹克运动会">奥运会</abbr> 将于 2024 年 8 月在法国巴黎举行。</p>
+
+<div class="note">
+<p><strong>Note</strong>: 还有另一个元素&lt;acronym&gt;,它基本上与&lt;abbr&gt;相同,专门用于首字母缩略词而不是缩略语。 然而,这已经被废弃了 - 它在浏览器的支持中不如&lt;abbr&gt;,并且具有类似的功能,所以没有意义。 只需使用&lt;abbr&gt;。</p>
+</div>
+
+<h3 id="主动学习:标记一个缩略语">主动学习:标记一个缩略语</h3>
+
+<p>在这个简单的主动学习任务中,我们希望你简单地标记一个缩写。你可以使用下面的示例,或者用自己的示例来替换。</p>
+
+<div class="hidden">
+<h6 id="Playable_code_3">Playable code 3</h6>
+
+<pre class="brush: html notranslate"><code>&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 100px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '&lt;p&gt;NASA 做了一些动人心弦的事情。&lt;/p&gt;';
+ const answer = '&lt;p&gt;&lt;abbr title="美国国家航空航天局(National Aeronautics and Space Administration)"&gt;NASA&lt;/abbr&gt; 做了一些动人心弦的事情。&lt;/p&gt;';
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</code></pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_3', 700, 400, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h2 id="标记联系方式">标记联系方式</h2>
+
+<p>HTML有个用于标记联系方式的元素——{{htmlelement("address")}}。它仅仅包含你的联系方式,例如:</p>
+
+<pre class="brush: html notranslate">&lt;address&gt;
+ &lt;p&gt;Chris Mills, Manchester, The Grim North, UK&lt;/p&gt;
+&lt;/address&gt;</pre>
+
+<p>但要记住的一点是,<code>&lt;address&gt;</code>元素是为了标记编写HTML文档的人的联系方式,而不是任何其他的内容。因此,如果这是Chris写的文档,上面的内容将会很好。注意,下面的内容也是可以的:</p>
+
+<pre class="brush: html notranslate">&lt;address&gt;
+ &lt;p&gt;Page written by &lt;a href="../authors/chris-mills/"&gt;Chris Mills&lt;/a&gt;.&lt;/p&gt;
+&lt;/address&gt;</pre>
+
+<h2 id="上标和下标">上标和下标</h2>
+
+<p>当你使用日期、化学方程式、和数学方程式时会偶尔使用上标和下标。 {{htmlelement("sup")}} 和{{htmlelement("sub")}}元素可以解决这样的问题。例如:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;咖啡因的化学方程式是 C&lt;sub&gt;8&lt;/sub&gt;H&lt;sub&gt;10&lt;/sub&gt;N&lt;sub&gt;4&lt;/sub&gt;O&lt;sub&gt;2&lt;/sub&gt;。&lt;/p&gt;
+&lt;p&gt;如果 x&lt;sup&gt;2&lt;/sup&gt; 的值为 9,那么 x 的值必为 3 或 -3。&lt;/p&gt;
+</pre>
+
+<p>这些代码输出的结果是:</p>
+
+<p>咖啡因的化学方程式是 C<sub>8</sub>H<sub>10</sub>N<sub>4</sub>O<sub>2</sub>。</p>
+
+<p>如果 x<sup>2</sup> 的值为 9,那么 x 的值必为 3 或 -3。</p>
+
+<h2 id="展示计算机代码">展示计算机代码</h2>
+
+<p>有大量的HTML元素可以来标记计算机代码:</p>
+
+<ul>
+ <li>{{htmlelement("code")}}: 用于标记计算机通用代码。</li>
+ <li>{{htmlelement("pre")}}: 用于保留空白字符(通常用于代码块)——如果您在文本中使用缩进或多余的空白,浏览器将忽略它,您将不会在呈现的页面上看到它。但是,如果您将文本包含在<code>&lt;pre&gt;&lt;/pre&gt;</code>标签中,那么空白将会以与你在文本编辑器中看到的相同的方式渲染出来。</li>
+ <li>{{htmlelement("var")}}: 用于标记具体变量名。</li>
+ <li>{{htmlelement("kbd")}}: 用于标记输入电脑的键盘(或其他类型)输入。</li>
+ <li>{{htmlelement("samp")}}: 用于标记计算机程序的输出。</li>
+</ul>
+
+<p>让我们看看一些例子。你应该尝试运行一下(尝试运行一下<a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/advanced-text-formatting/other-semantics.html">other-semantics.html</a>样例文件的拷贝):</p>
+
+<pre class="brush: html notranslate">&lt;pre&gt;&lt;code&gt;const para = document.querySelector('p');
+
+para.onclick = function() {
+ alert('噢,噢,噢,别点我了。');
+}&lt;/code&gt;&lt;/pre&gt;
+
+&lt;p&gt;请不要使用 &lt;code&gt;&amp;lt;font&amp;gt;&lt;/code&gt; 、 &lt;code&gt;&amp;lt;center&amp;gt;&lt;/code&gt; 等表象元素。&lt;/p&gt;
+
+&lt;p&gt;在上述的 JavaScript 示例中,&lt;var&gt;para&lt;/var&gt; 表示一个段落元素。&lt;/p&gt;
+
+
+&lt;p&gt;按 &lt;kbd&gt;Ctrl&lt;/kbd&gt;/&lt;kbd&gt;Cmd&lt;/kbd&gt; + &lt;kbd&gt;A&lt;/kbd&gt; 选择全部内容。&lt;/p&gt;
+
+&lt;pre&gt;$ &lt;kbd&gt;ping mozilla.org&lt;/kbd&gt;
+&lt;samp&gt;PING mozilla.org (63.245.215.20): 56 data bytes
+64 bytes from 63.245.215.20: icmp_seq=0 ttl=40 time=158.233 ms&lt;/samp&gt;&lt;/pre&gt;
+</pre>
+
+<p>上面的代码显示效果如下:</p>
+
+<p>{{ EmbedLiveSample('展示计算机代码','100%',300, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h2 id="标记时间和日期">标记时间和日期</h2>
+
+<p>HTML 还支持将时间和日期标记为可供机器识别的格式的 {{htmlelement("time")}} 元素。例如:</p>
+
+<pre class="brush: html notranslate">&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-01-20<span class="pl-pds">"</span></span>&gt;2016年1月20日&lt;/<span class="pl-ent">time</span>&gt;</pre>
+
+<p>为什么需要这样做?因为世界上有许多种书写日期的格式,上边的日期可能被写成:</p>
+
+<ul>
+ <li>20 January 2016</li>
+ <li>20th January 2016</li>
+ <li>Jan 20 2016</li>
+ <li>20/06/16</li>
+ <li>06/20/16</li>
+ <li>The 20th of next month</li>
+ <li><span lang="fr">20e Janvier 2016</span></li>
+ <li><span lang="ja">2016年1月20日</span></li>
+ <li><span lang="ja">And so on</span></li>
+</ul>
+
+<p>但是这些不同的格式不容易被电脑识别 — 假如你想自动抓取页面上所有事件的日期并将它们插入到日历中,{{htmlelement("time")}} 元素允许你附上清晰的、可被机器识别的 时间/日期来实现这种需求。</p>
+
+<p>上述基本的例子仅仅提供了一种简单的可被机器识别的日期格式,这里还有许多其他支持的格式,例如:</p>
+
+<pre class="brush: html notranslate">&lt;!-- 标准简单日期 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-01-20<span class="pl-pds">"</span></span>&gt;20 January 2016&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 只包含年份和月份--&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-01<span class="pl-pds">"</span></span>&gt;January 2016&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 只包含月份和日期 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>01-20<span class="pl-pds">"</span></span>&gt;20 January&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 只包含时间,小时和分钟数 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>19:30<span class="pl-pds">"</span></span>&gt;19:30&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 还可包含秒和毫秒 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span></span>19:30:01.856<span class="pl-s"><span class="pl-pds">"</span></span>&gt;19:30:01.856&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 日期和时间 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-01-20T19:30<span class="pl-pds">"</span></span>&gt;7.30pm, 20 January 2016&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 含有时区偏移值的日期时间 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-01-20T19:30<span class="pl-pds">+01:00"</span></span>&gt;7.30pm, 20 January 2016 is 8.30pm in France&lt;/<span class="pl-ent">time</span>&gt;
+&lt;!-- 调用特定的周 --&gt;
+&lt;<span class="pl-ent">time</span> <span class="pl-e">datetime</span>=<span class="pl-s"><span class="pl-pds">"</span>2016-W04<span class="pl-pds">"</span></span>&gt;The fourth week of 2016&lt;/<span class="pl-ent">time</span>&gt;</pre>
+
+<h2 id="总结">总结</h2>
+
+<p>到这里你就完成了 HTML 语义文本元素的学习。但要记住,你在本课程中学到的并不是 HTML 文本元素的详细列表 — 我们想要尽量覆盖主要的、通用的、常见的,或者至少是有趣的部分。如果你想找到更多的 HTML 元素,可以看一看我们的<a href="/zh-CN/docs/Web/HTML/Element">HTML 元素参考</a>(从 <a href="/zh-CN/docs/Web/HTML/Element#内联文本语义">内联文本语义</a>部分开始会是一个好的选择) 。在下一篇文章中我们将会学习用来组织 HTML 文档不同部分的 HTML 元素。</p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Creating_hyperlinks", "Learn/HTML/Introduction_to_HTML/文件和网站结构", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/creating_hyperlinks/index.html b/files/zh-cn/learn/html/introduction_to_html/creating_hyperlinks/index.html
new file mode 100644
index 0000000000..63ad5724ad
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/creating_hyperlinks/index.html
@@ -0,0 +1,323 @@
+---
+title: 建立超链接
+slug: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks
+tags:
+ - HTML指南
+ - URL
+ - 超链接
+translation_of: Learn/HTML/Introduction_to_HTML/Creating_hyperlinks
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals", "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary"><span id="result_box" lang="zh-CN"><span>超链接非常重要 ——它们使互联网成为一个互联的网络。</span><span>本文介绍了创建链接所需的语法,并且讨论了链接的最佳实现方法。</span></span></p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">前提:</th>
+ <td>熟悉基本HTML(包含在<a href="https://wiki.developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started"> 开始学习HTML</a>中),HTML 文本格式(包含在 <a href="https://wiki.developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML文字基础</a> 中)。</td>
+ </tr>
+ <tr>
+ <th scope="row">目标:</th>
+ <td>学习如何实现一个有效地把多个文件链接在一起的超文本链接。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="什么是超链接">什么是超链接?</h2>
+
+<p><span id="result_box" lang="zh-CN"><span>超链接是互联网提供的最令人兴奋的创新之一,</span><span>它们从一开始就一直是互联网的一个特性,使互联网成为互联的网络。超链接使我们能够将我们的文档链接到任何其他文档(或其他资源),也可以链接</span><span>到文档的指定部分,我们可以在一个简单的网址上提供应用程序(与必须先安装的本地应用程序或其他东西相比)。几乎任何网络内容都可以转换为链接,</span><span>点击(或激活)超链接将使网络浏览器转到另一个网址({{glossary("URL")}})。</span></span></p>
+
+<div class="note">
+<p>注意:URL可以指向HTML文件、文本文件、图像、文本文档、视频和音频文件以及可以在网络上保存的任何其他内容。 如果浏览器不知道如何显示或处理文件,它会询问您是否要打开文件(需要选择合适的本地应用来打开或处理文件)或下载文件(以后处理它)。</p>
+</div>
+
+<p><span lang="zh-CN"><span>以 BBC 的主页为例,里面就包含了非常多的连结,各自连到不同新闻、网站的其它地方(导览功能),或者登入/注册页面等等。</span></span></p>
+
+<p><img alt="frontpage of bbc.co.uk, showing many news items, and navigation menu functionality" src="https://mdn.mozillademos.org/files/17032/updated-bbc-website.png"></p>
+
+<h2 id="链接的解析"><span class="short_text" id="result_box" lang="zh-CN"><span>链接的解析</span></span></h2>
+
+<p><span id="result_box" lang="zh-CN"><span>通过将文本(或其他内容,见{{anch("块级链接")}})转换为{{htmlelement("a")}}元素内的链接来创建基本链接,</span> <span>给它一个{{htmlattrxref("href", "a")}}属性(也称为目标),它将包含您希望链接指向的网址。</span></span></p>
+
+<pre class="brush: html notranslate">&lt;p&gt;我创建了一个指向
+&lt;a href="https://www.mozilla.org/zh-CN/"&gt;Mozilla 主页&lt;/a&gt;
+的超链接。
+&lt;/p&gt;</pre>
+
+<p><span class="short_text" id="result_box" lang="zh-CN"><span>结果如下所示:</span></span></p>
+
+<p>我创建了一个指向 <a href="https://www.mozilla.org/zh-CN/">Mozilla 主页</a> 的超链接。</p>
+
+<h3 id="使用title属性添加支持信息"><span class="short_text" id="result_box" lang="zh-CN"><span>使用title属性添加支持信息</span></span></h3>
+
+<p><span id="result_box" lang="zh-CN"><span>您可能要添加到您的链接的另一个属性是标题;</span><span>这旨在包含关于链接的补充有用信息,例如页面包含什么样的信息或需要注意的事情。</span> <span>例如:</span></span></p>
+
+<pre class="brush: html notranslate">&lt;p&gt;我创建了一个指向
+&lt;a href="https://www.mozilla.org/zh-CN/"
+ title="了解 Mozilla 使命以及如何参与贡献的最佳站点。"&gt;Mozilla 主页&lt;/a&gt;
+的超链接。
+&lt;/p&gt;</pre>
+
+<p><span class="short_text" id="result_box" lang="zh-CN"><span>结果如下(当鼠标指针悬停在链接上时,标题将作为提示信息出现):</span></span></p>
+
+<p>我创建了一个指向 <a href="https://www.mozilla.org/zh-CN/">Mozilla 主页</a> 的超链接。</p>
+
+<div class="note">
+<p>注意:链接的标题仅当鼠标悬停在其上时才会显示,这意味着使用键盘来导航网页的人很难获取到标题信息。如果标题信息对于页面非常重要,你应该使用所有用户能都方便获取的方式来呈现,例如放在常规文本中。</p>
+</div>
+
+<h3 id="主动学习:创建您自己的示例链接"><span class="short_text" id="result_box" lang="zh-CN"><span>主动学习:创建您自己的示例链接</span></span></h3>
+
+<p><span class="short_text" id="result_box" lang="zh-CN"><span>主动学习时间:我们希望您使用本地代码编辑器创建一个HTML文档(我们的</span></span> <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/getting-started/index.html">入门模板</a> 很适合<span class="short_text" lang="zh-CN"><span>)</span></span></p>
+
+<ul>
+ <li>在HTML内,尝试添加一个或者多个段落或其他你知道类型的内容。</li>
+ <li>将某些内容转换为链接。</li>
+ <li>包含标题属性。</li>
+</ul>
+
+<h3 id="块级链接">块级链接</h3>
+
+<p>如上所述,你可以将一些内容转换为链接,甚至是<a href="/zh-CN/docs/Web/HTML/Block-level_elements">块级元素</a>。例如你想要将一个图像转换为链接,你只需把图像元素放到<code>&lt;a&gt;&lt;/a&gt;</code>标签中间。</p>
+
+<pre class="brush: html notranslate">&lt;a href="https://www.mozilla.org/zh-CN/"&gt;
+ &lt;img src="mozilla-image.png" alt="链接至 Mozilla 主页的 Mozilla 标志"&gt;
+&lt;/a&gt;</pre>
+
+<div class="note">
+<p><strong>注意</strong>: 你会在未来的文章中发现更多在Web中使用图像的例子。</p>
+</div>
+
+<h2 id="统一资源定位符URL与路径path快速入门">统一资源定位符(URL)与路径(path)快速入门</h2>
+
+<p>要全面地了解链接目标,你需要了解统一资源定位符和文件路径。本小节将介绍相关的信息。</p>
+
+<p>统一资源定位符(英文:<strong>U</strong>niform <strong>R</strong>esource <strong>L</strong>ocator,简写:URL)是一个定义了在网络上的位置的一个文本字符串。例如 Mozilla 的中文主页定位在 <code>https://www.mozilla.org/zh-CN/</code>.</p>
+
+<p>URL使用路径查找文件。路径指定文件系统中您感兴趣的文件所在的位置。看一下一个简单的目录结构的例子(源码可查看 <a href="https://github.com/roy-tian/learning-area/tree/master/html/introduction-to-html/creating-hyperlinks">创建超链接(creating-hyperlinks</a>)。)<img alt="A simple directory structure. The parent directory is called creating-hyperlinks and contains two files called index.html and contacts.html, and two directories called projects and pdfs, which contain an index.html and a project-brief.pdf file, respectively" src="https://mdn.mozillademos.org/files/12409/simple-directory.png" style="display: block; margin: 0 auto;"></p>
+
+<p>此目录结构的<strong>根目录</strong>称为<code>creating-hyperlinks</code>。当在网站上工作时, 你会有一个包含整个网站的目录。在根目录,我们有一个<code>index.html</code>和一个<code>contacts.html</code>文件。在真实的网站上,<code>index.html</code> 将会成为我们的主页或登录页面。</p>
+
+<p>我们的根目录还有两个目录—— <code>pdfs</code> 和<code>projects</code>,它们分别包含一个 PDF (<code>project-brief.pdf</code>) 文件和一个<code>index.html</code> 文件。请注意你可以有两个<code>index.html</code>文件,前提是他们在不同的目录下,许多网站就是如此。第二个<code>index.html</code>或许是项目相关信息的主登录界面。</p>
+
+<ul>
+ <li>
+ <p><strong>指向当前目录:</strong>如果<code>index.html</code>(目录顶层的<code>index.html</code>)想要包含一个超链接指向<code>contacts.html</code>,你只需要指定想要链接的文件名,因为它与当前文件是在同一个目录的. 所以你应该使用的URL是<code>contacts.html</code>:</p>
+
+ <pre class="brush: html notranslate">&lt;p&gt;要联系某位工作人员,请访问我们的 &lt;a href="contacts.html"&gt;联系人页面&lt;/a&gt;。&lt;/p&gt;
+</pre>
+ </li>
+ <li>
+ <p><strong>指向子目录:</strong>如果<code>index.html</code> (目录顶层<code>index.html</code>)想要包含一个超链接指向 <code>projects/index.html</code>,您需要先进入<code>projects/</code>项目目录,然后指明要链接到的文件<code>index.html</code>。 通过指定目录的名称,然后是正斜杠,然后是文件的名称。因此您要使用的URL是<code>projects/index.html</code>:</p>
+
+ <pre class="brush: html notranslate">&lt;p&gt;请访问 &lt;a href="projects/index.html"&gt;项目页面&lt;/a&gt;。&lt;/p&gt;</pre>
+ </li>
+ <li>
+ <p><strong>指向上级目录: </strong>如果你想在<code>projects/index.html</code>中包含一个指向<code>pdfs/project-brief.pdf</code>的超链接,你必须先返回上级目录,然后再回到<code>pdf</code>目录。“返回上一个目录级”使用两个英文点号表示 — <code>..</code> — 所以你应该使用的URL是 <code>../pdfs/project-brief.pdf</code>:</p>
+
+ <pre class="brush: html notranslate">&lt;p&gt;点击打开 &lt;a href="../pdfs/project-brief.pdf"&gt;项目简介&lt;/a&gt;。&lt;/p&gt;</pre>
+ </li>
+</ul>
+
+<div class="note">
+<p>注意:如果需要的话,你可以将这些功能的多个例子和复杂的url结合起来。例如:<code>../../../complex/path/to/my/file.html</code>.</p>
+</div>
+
+<h3 id="文档片段">文档片段</h3>
+
+<p>超链接除了可以链接到文档外,也可以链接到HTML文档的特定部分(被称为<strong>文档片段</strong>)<span>。要做到这一点,你必须首先给要链接到的元素分配一个</span>{{htmlattrxref("id")}}<span>属性。例如,如果你想链接到一个特定的标题,可以这样做:</span></p>
+
+<pre class="brush: html notranslate">&lt;h2 id="Mailing_address"&gt;邮寄地址&lt;/h2&gt;</pre>
+
+<p>然后链接到那个特定的<code>id</code>,您可以在URL的结尾使用一个井号指向它,例如:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;要提供意见和建议,请将信件邮寄至 &lt;a href="contacts.html#Mailing_address"&gt;我们的地址&lt;/a&gt;。&lt;/p&gt;</pre>
+
+<p>你甚至可以在同一份文档下,通过链接文档片段,来链接到同一份文档的另一部分:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;本页面底部可以找到 &lt;a href="#Mailing_address"&gt;公司邮寄地址&lt;/a&gt;。&lt;/p&gt;</pre>
+
+<h3 id="绝对URL和相对URL">绝对<span><strong>URL</strong></span>和相对<span><strong>URL</strong></span></h3>
+
+<p><span>你可能会在网络上遇到两个术语,<strong>绝对URL</strong>和<strong>相对URL</strong><em>(或者称为,<strong>绝对链接</strong>和<strong>相对链接</strong>)</em>:</span></p>
+
+<p><strong>绝对URL</strong>:指向由其在Web上的绝对位置定义的位置,包括 {{glossary("protocol")}}(协议) 和 {{glossary("domain name")}}(域名)。像下面的例子,如果<code>index.html</code>页面上传到<code>projects</code>这一个目录。并且<code>projects</code>目录位于web服务站点的根目录,web站点的域名为<code>http://www.example.com</code>,那么这个页面就可以通过<code>http://www.example.com/projects/index.html</code>访问(或者通过<code>http://www.example.com/projects/</code>来访问,因为在没有指定特定的URL的情况下,大多数web服务会默认访问加载<code>index.html</code>这类页面)</p>
+
+<p>不管绝对URL在哪里使用,它总是指向确定的相同位置。</p>
+
+<p><strong>相对URL</strong>:指向与您链接的文件相关的位置,更像我们在前面一节中所看到的位置。例如,如果我们想从示例文件链接<code>http://www.example.com/projects/index.html</code>转到相同目录下的一个PDF文件,URL就是文件名URL——例如<code>project-brief.pdf</code>——没有其他的信息要求。如果PDF文件能够在<code>projects</code>的子目录<code>pdfs</code>中访问到,相对路径就是<code>pdfs/project-brief.pdf</code>(对应的绝对URL是<code>http://www.example.com/projects/pdfs/project-brief.pdf</code>)</p>
+
+<p>一个相对URL将指向不同的位置,这取决于它所在的文件所在的位置——例如,如果我们把<code>index.html</code>文件从<code>projects</code>目录移动到Web站点的根目录(最高级别,而不是任何目录中),里面的<code>pdfs/project-brief.pdf</code>相对URL将会指向<code>http://www.example.com/pdfs/project-brief.pdf</code>,而不是<code>http://www.example.com/projects/pdfs/project-brief.pdf</code></p>
+
+<p>当然,<code>project-brief.pdf</code>文件和<code>pdfs</code>文件夹的位置不会因为您移动了<code>index.html</code>文件而突然发生变化——这将使您的链接指向错误的位置,因此如果单击它,它将无法工作。你得小心点!</p>
+
+<h2 id="链接最佳实践">链接最佳实践</h2>
+
+<p>下面是一些在编写链接元素时可以遵循的最佳实践。</p>
+
+<ul>
+</ul>
+
+<h3 id="使用清晰的链接措辞">使用清晰的链接措辞</h3>
+
+<p>把链接放在你的页面上很容易。这还不够。我们需要让所有的读者都可以使用链接,不管他们当前的环境和哪些工具。例如:</p>
+
+<ul>
+ <li>使用屏幕阅读器的用户喜欢从页面上的一个链接跳到另一个链接,并且脱离上下文来阅读链接。</li>
+ <li>搜索引擎使用链接文本来索引目标文件,所以在链接文本中包含关键词是一个很好的主意,以有效地描述与之相关的信息。</li>
+ <li>读者往往会浏览页面而不是阅读每一个字,他们的眼睛会被页面的特征所吸引,比如链接。他们会找到描述性的链接。</li>
+</ul>
+
+<p>下面是一个具体的例子:</p>
+
+<p><em><strong>好的</strong>链接文本:</em> <a href="https://firefox.com/">下载Firefox</a></p>
+
+<pre class="brush: html notranslate">&lt;p&gt;&lt;a href="https://firefox.com/"&gt;
+ 下载Firefox
+&lt;/a&gt;&lt;/p&gt;</pre>
+
+<p><em><strong>不好的</strong>链接文本:</em> <a href="https://firefox.com/">点击这里</a>下载Firefox</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;&lt;a href="https://firefox.com/"&gt;
+ 点击这里
+&lt;/a&gt;
+下载Firefox&lt;/p&gt;
+</pre>
+
+<p>其他提示:</p>
+
+<ul>
+ <li>不要重复URL作为链接文本的一部分 ——URL看起来很丑,当屏幕朗读器一个字母一个字母的读出来的时候听起来就更丑了。</li>
+ <li>不要在链接文本中说“链接”或“链接到”——它只是噪音。屏幕阅读器告诉人们有一个链接。可视化用户也会知道有一个链接,因为链接通常是用不同的颜色设计的,并且存在下划线(这个惯例一般不应该被打破,因为用户习惯了它。)</li>
+ <li>保持你的链接标签尽可能短——长链接尤其惹恼屏幕阅读器用户,他们必须听到整件事读出来。</li>
+</ul>
+
+<h3 id="尽可能使用相对链接">尽可能使用相对链接</h3>
+
+<p>从上面的描述中,您可能认为始终使用绝对链接是一个好主意;毕竟,当页面像相对链接那样移动时,它们不会中断。但是,当链接到同一网站的其他位置时,你应该使用相对链接(当链接到另一个网站时,你需要使用绝对链接):</p>
+
+<ul>
+ <li>首先,检查代码要容易得多——相对URL通常比绝对URL短得多,这使得阅读代码更容易。</li>
+ <li>其次,在可能的情况下使用相对URL更有效。当使用绝对URL时,浏览器首先通过{{glossary("DNS")}}(见<a href="/zh-CN/docs/Learn/Getting_started_with_the_web/How_the_Web_works">万维网是如何工作的</a>)查找服务器的真实位置,然后再转到该服务器并查找所请求的文件。另一方面,相对URL,浏览器只在同一服务器上查找被请求的文件。因此,如果你使用绝对URL而不是相对URL,你就会不断地让你的浏览器做额外的工作,这意味着它的效率会降低。</li>
+</ul>
+
+<h3 id="链接到非HTML资源_——留下清晰的指示">链接到非HTML资源 ——留下清晰的指示</h3>
+
+<p>当链接到一个需要下载的资源(如PDF或Word文档)或流媒体(如视频或音频)或有另一个潜在的意想不到的效果(打开一个弹出窗口,或加载Flash电影),你应该添加明确的措辞,以减少任何混乱。如下的例子会让人反感:</p>
+
+<ul>
+ <li>如果你是在低带宽连接,点击一个链接,然后就开始下载大文件。</li>
+ <li>如果你没有安装Flash播放器,点击一个链接,然后突然被带到一个需要Flash的页面。</li>
+</ul>
+
+<p>让我们看看一些例子,看看在这里可以使用什么样的文本:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;&lt;a href="http://www.example.com/large-report.pdf"&gt;
+ 下载销售报告(PDF, 10MB)
+&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;a href="http://www.example.com/video-stream/"&gt;
+ 观看视频(将在新标签页中播放, HD画质)
+&lt;/a&gt;&lt;/p&gt;
+
+&lt;p&gt;&lt;a href="http://www.example.com/car-game"&gt;
+ 进入汽车游戏(需要Flash插件)
+&lt;/a&gt;&lt;/p&gt;</pre>
+
+<h3 id="在下载链接时使用_download_属性">在下载链接时使用 download 属性</h3>
+
+<p>当您链接到要下载的资源而不是在浏览器中打开时,您可以使用 download 属性来提供一个默认的保存文件名(译注:此属性仅适用于<a href="/zh-CN/docs/Web/Security/Same-origin_policy">同源URL</a>)。下面是一个下载链接到Firefox 的 Windows最新版本的示例:</p>
+
+<pre class="notranslate"><code>&lt;a href="https://download.mozilla.org/?product=firefox-latest-ssl&amp;os=win64&amp;lang=zh-CN"
+ download="firefox-latest-64bit-installer.exe"&gt;
+ 下载最新的 Firefox 中文版 - Windows(64位)
+&lt;/a&gt;</code></pre>
+
+<h2 id="主动学习:创建一个导航菜单">主动学习:创建一个导航菜单</h2>
+
+<p>在这个练习中,我们希望你把一些页面和导航菜单链接起来,创建一个多页面的网站。这是创建网站的一种常见方式——每一页都使用相同的页面结构,包括相同的导航菜单,所以当链接被点击时,它给人的印象是你停留在同一个地方,不同的内容正在被提出来。</p>
+
+<p>您需要将以下四页的本地副本放在同一目录中。 (see the <a href="https://github.com/roy-tian/learning-area/tree/master/html/introduction-to-html/navigation-menu-start">navigation-menu-start</a> directory if you want a the full listing):</p>
+
+<ul>
+ <li><a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/navigation-menu-start/index.html">index.html</a></li>
+ <li><a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/navigation-menu-start/projects.html">projects.html</a></li>
+ <li><a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/navigation-menu-start/pictures.html">pictures.html</a></li>
+ <li><a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/navigation-menu-start/social.html">social.html</a></li>
+</ul>
+
+<p>你应该:</p>
+
+<ol>
+ <li>在一个页面上的指定位置添加一个无序列表,其中包含要链接到的页面的名称。导航菜单通常只是一个链接列表,因此这在语义上是确定的。</li>
+ <li>将每个页面名称转换为该页的链接。</li>
+ <li>将导航菜单复制到每个页面。</li>
+ <li>在每一页上,只删除同一页的链接——一个页面包含自己的链接是令人困惑和毫无意义的,而缺少链接会对你当前的页面起到很好的视觉提示作用。</li>
+</ol>
+
+<p>最终的例子应该是这样的:</p>
+
+<p><img alt="简单的HTML导航菜单,包含主页、图片、项目、社交四个项目。" src="https://mdn.mozillademos.org/files/17395/navigation_example_cn.png" style="display: block; margin: 0 auto;"></p>
+
+<div class="note">
+<p><strong>注意</strong>: 如果你卡住了,或者不确定你是否正确,你可以检查导航菜单上的目录,看看正确的答案。</p>
+</div>
+
+<h2 id="电子邮件链接">电子邮件链接</h2>
+
+<p>当点击一个链接或按钮时,打开一个新的电子邮件发送信息而不是连接到一个资源或页面,这种情况是可能做到的。这样做是使用{{HTMLElement("a")}}元素和<code>mailto</code>:URL的方案。<br>
+ 其最基本和最常用的使用形式为一个<code>mailto</code>:link (链接),链接简单说明收件人的电子邮件地址。例如:</p>
+
+<pre class="brush: html notranslate">&lt;a href="mailto:nowhere@mozilla.org"&gt;向 nowhere 发邮件&lt;/a&gt;
+</pre>
+
+<p>这会创建一个链接,看起来像这样: <a href="mailto:nowhere@mozilla.org">向 nowhere 发邮件</a>。</p>
+
+<p>实际上,邮件地址甚至是可选的。如果你忘记了(也就是说,你的{{htmlattrxref("href", "a")}}仅仅只是简单的"<code>mailto:</code>"),一个新的发送电子邮件的窗口也会被用户的邮件客户端打开,只是没有收件人的地址信息,这通常在“分享”链接是很有用的,用户可以发送给他们选择的地址邮件</p>
+
+<h3 id="具体细节">具体细节</h3>
+
+<p>除了电子邮件地址,您还可以提供其他信息。事实上,任何标准的邮件头字段可以被添加到你提供的邮件URL。 其中最常用的是主题(subject)、抄送(cc)和主体(body) (这不是一个真正的头字段,但允许您为新邮件指定一个短内容消息)。 每个字段及其值被指定为查询项。</p>
+
+<p>下面是一个包含cc、bcc、主题和主体的示例:</p>
+
+<pre class="brush: html notranslate">&lt;a href="mailto:nowhere@mozilla.org?cc=name2@rapidtables.com&amp;bcc=name3@rapidtables.com&amp;subject=The%20subject%20of%20the%20email&amp;body=The%20body%20of%20the%20email"&gt;
+ Send mail with cc, bcc, subject and body
+&lt;/a&gt;</pre>
+
+<div class="note">
+<p><strong>注意:</strong> 每个字段的值必须是URL编码的。 也就是说,不能有非打印字符(不可见字符比如制表符、换行符、分页符)和空格 <a href="http://en.wikipedia.org/wiki/Percent-encoding">percent-escaped</a>. 同时注意使用问号(<code>?</code>)来分隔主URL与参数值,以及使用&amp;符来分隔<code>mailto:</code>中的各个参数。 这是标准的URL查询标记方法。阅读 <a href="/zh-CN/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data#GET_方法">GET 方法</a> 以了解哪种URL查询标记方法是更常用的。</p>
+</div>
+
+<p>这里有一些其他的示例<code>mailto</code>链接:</p>
+
+<ul>
+ <li><a href="mailto:">mailto:</a></li>
+ <li><a href="mailto:nowhere@mozilla.org">mailto:nowhere@mozilla.org</a></li>
+ <li><a href="mailto:nowhere@mozilla.org,nobody@mozilla.org">mailto:nowhere@mozilla.org,nobody@mozilla.org</a></li>
+ <li><a href="mailto:nowhere@mozilla.org?cc=nobody@mozilla.org">mailto:nowhere@mozilla.org?cc=nobody@mozilla.org</a></li>
+ <li><a href="mailto:nowhere@mozilla.org?cc=nobody@mozilla.org&amp;subject=This%20is%20the%20subject">mailto:nowhere@mozilla.org?cc=nobody@mozilla.org&amp;subject=This%20is%20the%20subject</a></li>
+</ul>
+
+<h2 id="小结">小结</h2>
+
+<p>这就是链接!当您开始查看样式时,您将在稍后的课程中返回链接。接下来是HTML,我们将返回文本语义,并查看一些更高级/不寻常的功能,您会发现有用的-高级文本格式是您的下一站。</p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals", "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/debugging_html/index.html b/files/zh-cn/learn/html/introduction_to_html/debugging_html/index.html
new file mode 100644
index 0000000000..86ebf29c63
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/debugging_html/index.html
@@ -0,0 +1,179 @@
+---
+title: HTML 调试
+slug: learn/HTML/Introduction_to_HTML/Debugging_HTML
+tags:
+ - Debug
+ - HTML
+ - W3C
+ - 初学者
+ - 指南
+ - 调试
+ - 错误
+ - 验证
+translation_of: Learn/HTML/Introduction_to_HTML/Debugging_HTML
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Document_and_website_structure", "Learn/HTML/Introduction_to_HTML/Marking_up_a_letter", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">HTML 优雅明了,但要是出了错,你会不会一头雾水呢,本节将介绍一些查找和修复 HTML 错误的工具。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>阅读并理解 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started">HTML 入门</a>、<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a> 和 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a> 等文章,熟悉 HTML 的基本概念。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>学习调试工具的基础用法,以查找 HTML 中的错误。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="调试并不可怕">调试并不可怕</h2>
+
+<p>写代码通常都是按部就班的,但是一旦犯了错,可怕的代码问题就出现了:或彻底罢工,或得不到正确结果。比如,以下窗口显示了:用 <a href="https://www.rust-lang.org/">Rust</a> 编写的一个小程序在 {{glossary("compile", "编译")}} 时得到的出错信息:</p>
+
+<p><img alt="一个控制台窗口,显示了一个rust工程编译时的出错信息。(println宏少一个引号)" src="https://mdn.mozillademos.org/files/16527/03.gif" style="display: block; height: 463px; margin: 0px auto; width: 658px;">这里错误信息比较容易理解:"unterminated double quote string",即"双引号字符串未闭合"。错误列表中可以看到 <code>println!(Hello, world!");</code> 这里少一个双引号,然而当程序规模变大时,错误信息也会变得更复杂和更难解释,同时对于 Rust 新手而言,上述提示也是找不到北。</p>
+
+<p>调试其实没有那么可怕,写代码和调试的关键其实是:熟悉语言本身和相关工具。</p>
+
+<h2 id="HTML_和调试">HTML 和调试</h2>
+
+<p>HTML 并不像 Rust 那么难以理解,浏览器并不会将 HTML 编译成其它形式,而是直接解析并显示结果(称之为解释,而非编译)。可以说 HTML 的 {{glossary("element", "元素")}} 语法比 Rust、{{glossary("JavaScript")}} 或 {{glossary("Python")}} 这样“真正的编程语言”更容易理解。浏览器解析 HTML 的过程比编程语言的编译运行的过程要<strong>宽松</strong>得多,但这是一把双刃剑。</p>
+
+<h3 id="宽松的代码">宽松的代码</h3>
+
+<p>宽松是什么意思呢?通常写错代码会带来以下两种主要类型的错误:</p>
+
+<ul>
+ <li><strong>语法错误</strong>:由于拼写错误导致程序无法运行,就像上面的 Rust 示例。通常熟悉语法并理解错误信息后很容易修复。</li>
+ <li><strong>逻辑错误:</strong>不存在语法错误,但代码无法按预期运行。通常逻辑错误比语法错误更难修复,因为无法得到指向错误源头的信息。</li>
+</ul>
+
+<p>HTML 本身不容易出现语法错误,因为浏览器是以宽松模式运行的,这意味着即使出现语法错误浏览器依然会继续运行。浏览器通常都有内建规则来解析书写错误的标记,所以即使与预期不符,页面仍可显示出来。当然,是存在隐患的。</p>
+
+<div class="note">
+<p><strong>注:</strong>HTML 之所以以宽松的方式进行解析,是因为 Web 创建的初心就是:人人可发布内容,不去纠结代码语法。如果 Web 以严格的风格起步,也许就不会像今天这样流行了。</p>
+</div>
+
+<h3 id="主动学习:研究宽容的代码风格">主动学习:研究宽容的代码风格</h3>
+
+<p>现在来研究 HTML 代码的宽松特性。</p>
+
+<ol>
+ <li>首先,下载并保存 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/debugging-html/debug-example.html">debug-example.html</a>。代码中故意留了一些错误,以便探究(这里的 HTML 标记写成了 <strong>糟糕的格式</strong>,与 <strong>良好的格式</strong> 相反)。</li>
+ <li>下一步,在浏览器中打开,可以看到:<img alt="一个简单的HTML文档,但其中包含一些常见的HTML错误,比如:未关闭的元素、嵌套混乱的元素、未关闭的属性。" src="https://mdn.mozillademos.org/files/16528/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7_2019-02-22_06.28.07.png" style="display: block; margin: 0px auto;"></li>
+ <li>看起来糟透了,我们到源代码中寻找原因(只列出 <code>body</code> 部分):
+ <pre class="brush: html notranslate">&lt;h1&gt;HTML 调试示例&lt;/h1&gt;
+
+&lt;p&gt;什么使得 HTML 出错?
+
+&lt;ul&gt;
+ &lt;li&gt;未闭合的元素:如果元素&lt;strong&gt;没有正确的结束标记,那么将影响下方整个区域,这不是你期望的。
+
+ &lt;li&gt;错误嵌套元素:正确进行嵌套是一项重要的编码习惯。&lt;strong&gt;重点(strong)&lt;em&gt;重点强调(strongly emphasised)?&lt;/strong&gt;这又是什么鬼?&lt;/em&gt;
+
+ &lt;li&gt;未闭合的属性:另一种 HTML 常见错误。来看一个示例:&lt;a href="https://www.mozilla.org/&gt;Mozilla 主页链接&lt;/a&gt;
+&lt;/ul&gt;
+</pre>
+ </li>
+ <li>以下是问题清单:
+ <ul>
+ <li>{{htmlelement("p","段落(Paragraph)")}} 和 {{htmlelement("li","列表项(list item)")}} 元素没有结束标签。但是由于元素的结束和另一个的开始很容易推断出来,因此上图中并没有太严重的渲染错误。</li>
+ <li>第一个 {{htmlelement("strong")}} 元素没有结束标签。这就严重了,因为该元素结束的位置难以确定。事实上所有剩余文本都加粗了。</li>
+ <li>一下嵌套有问题:<code>&lt;strong&gt;重点(strong)&lt;em&gt;重点强调(strongly emphasised)?&lt;/strong&gt;这又是什么鬼?&lt;/em&gt;​​​​</code>。浏览器很难做出正确解释,理由同上。</li>
+ <li>{{htmlattrxref("href","a")}} 属性缺少了一个双引号。从而导致了一个最严重的问题:整个链接完全没有渲染出来。</li>
+ </ul>
+ </li>
+ <li>下面暂时忽略源代码中的标记,先看一下浏览器渲染出的标记。打开浏览器的开发者工具。如果不太熟悉,请先阅读 <a href="/zh-CN/docs/Learn/Discover_browser_developer_tools">浏览器开发工具概览</a>。</li>
+ <li>在 DOM 查看器中可以看到渲染的标记:<img alt="Firefox控制台中的HTML检查器,可标亮元素,(图中标亮了“什么使得HTML出错?”)可以看到浏览器自动补齐了&lt;/p>关闭标签" src="https://mdn.mozillademos.org/files/16529/html-inspector.png" style="display: block; height: 1214px; margin: 0px auto; width: 1700px;"></li>
+ <li>通过 DOM 查看器可以清楚地看到,浏览器已经尝试修补代码错误(我们尝试了 Firefox,其他现代浏览器也应给出同样结果):
+ <ul>
+ <li>段落和列表元素加上了关闭标签。</li>
+ <li>第一个 <code>&lt;strong&gt;</code> 没有明确的关闭标签,因此浏览器为之后所有独立块都补全了 <code>&lt;strong&gt;&lt;/strong&gt;</code>。</li>
+ <li>浏览器是这样修补嵌套错误的:
+ <pre class="brush: html notranslate">&lt;strong&gt;重点(strong)
+ &lt;em&gt;重点强调(strongly emphasised)?&lt;/em&gt;
+&lt;/strong&gt;
+&lt;em&gt;这又是什么鬼?&lt;/em&gt;</pre>
+ </li>
+ <li>删除整个缺少双引号的链接。最后一个列表项就成了:
+ <pre class="brush: html notranslate">&lt;li&gt;
+ &lt;strong&gt;未闭合的属性:另一种 HTML 常见错误。来看一个示例:&lt;/strong&gt;
+&lt;/li&gt;</pre>
+ </li>
+ </ul>
+ </li>
+</ol>
+
+<h3 id="HTML_验证">HTML 验证</h3>
+
+<p>阅读以上示例后,你发现保持良好 HTML 格式的重要性。那么应该如何做呢?以上示例规模较小,查找错误还不难,但是一个非常庞大、复杂的 HTML 文档呢?</p>
+
+<p>最好的方法就是让你的HTML页面通过 <a href="https://validator.w3.org/">Markup Validation Service</a>。由 W3C(制定 HTML、CSS 和其他网络技术标准的组织) 创立并维护的标记验证服务。把一个 HTML 文档加载至本网页并运行 ,网页会返回一个错误报告。</p>
+
+<p><img alt="The HTML validator homepage" src="https://mdn.mozillademos.org/files/12441/validator.png" style="display: block; margin: 0 auto;"></p>
+
+<p>网页可以接受网址、上传一个 HTML 文档,或者直接输入一些 HTML 代码。</p>
+
+<h3 id="主动学习:验证_HTML_文档">主动学习:验证 HTML 文档</h3>
+
+<p>不妨用上文的 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/debugging-html/debug-example.html">debug-example.html</a> 尝试一下:</p>
+
+<ol>
+ <li>在浏览器中打开 <a href="https://validator.w3.org/">Markup Validation Service</a> 。</li>
+ <li>选择 <a href="https://validator.w3.org/#validate_by_input">Validate by Direct Input</a> 标签。</li>
+ <li>将整个示例文档的代码(而不仅仅是<code>body</code>部分)复制粘贴到正中的文本框内。</li>
+ <li><em>点击 </em><strong>Check</strong><em> 按钮。</em></li>
+</ol>
+
+<p>将返回一个包含错误和其它信息的列表。</p>
+
+<p><img alt="W3C验证工具为本示例给出的验证结果。" src="https://mdn.mozillademos.org/files/16530/validation-result.png" style="display: block; margin: 0px auto;"></p>
+
+<h4 id="错误信息分析">错误信息分析</h4>
+
+<p>错误信息一般都是有用的,也有没用的,有一些经验后你就能够分析并修复这些错误。下面来观察这些错误信息。可以看到每条信息都对应一个行号和一条信息,使得定位错误更方便。</p>
+
+<ul>
+ <li>End tag <code>li</code> implied, but there were open elements(需要 <code>li</code> 的结束标签,但又开始了新的元素)(共出现 2 次):这条信息表明有开始标签必须有结束标签,必须出现结束标签的地方却没有找到它。行/列信息指出结束标签必须出现的位置的第一行,这一线索已经足够明显了。</li>
+ <li>Unclosed element <code>strong</code>(未闭合元素 <code>strong</code> ):非常容易理解,{{htmlelement("strong")}} 元素没有闭合,行/列信息表明了它的位置。</li>
+ <li>End tag <code>strong</code> violates nesting rules(结束标签 <code>strong</code> 违反了嵌套规则):指出了错误嵌套的元素,行/列信息表明了它的位置。</li>
+ <li>End of file reached when inside an attribute value. Ignoring tag(在属性值内达到文件末尾。忽略标签): 这个比较难懂,它说的是在某个地方有一个属性的值格式有误,估计是在文件末尾附近,因为文件的结尾出现在了一个属性值里。事实上浏览器没有渲染超链接已经是一个很明显的线索了。</li>
+ <li>End of file seen and there were open elements(文件结尾有未闭合的元素):这个略有歧义,但基本上表明了有元素没有正确闭合。行号指向文件最后几行,且错误信息给出了一个这种错误的案例:
+ <pre class="notranslate">来看一个示例:&lt;a href="https://www.mozilla.org/&gt;Mozilla 主页链接&lt;/a&gt; ↩ &lt;/ul&gt;↩ &lt;/body&gt;↩&lt;/html&gt;</pre>
+
+ <div class="note">
+ <p><strong>注:</strong>属性缺少结束引号会导致元素无法闭合。因为文档所有剩余部分(直到文档某处出现一个引号)都将被解析为属性的内容。</p>
+ </div>
+ </li>
+ <li>Unclosed element <code>ul</code>(未闭合元素 <code>ul</code>):这个意义不大,因为 {{htmlelement("ul")}} 已经正确闭合了。出现这个错误是因为 {{htmlelement("a")}} 元素没有右引号而没有闭合。</li>
+</ul>
+
+<p><span>如果你不能一次弄懂所有的错误,别着急,可以试试先修复那些已经弄懂的,再申请验证,看看剩下哪些错误。有时候先修复的错误可能让你摆脱后面一系列的错误,因为一个小问题可能引发一连串错误,就像多米诺骨牌。</span></p>
+
+<p><span>所有错误都修复之后会得到以下输出:</span></p>
+
+<p><img alt="W3C站点上HTML通过验证的横幅" src="https://mdn.mozillademos.org/files/16531/valid-html-banner.png" style="display: block; height: 96px; margin: 0px auto; width: 996px;"></p>
+
+<h2 id="小结">小结</h2>
+
+<p>以上就是 HTML 调试的一篇入门介绍,同时对于调试 CSS 和 JavaScript 也有帮助,或者你职业生涯中的任一门语言。这也是 HTML 学习一章的最后一节,接下来是两个小测试,点击“下一页”来小试牛刀吧。</p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Document_and_website_structure", "Learn/HTML/Introduction_to_HTML/Marking_up_a_letter", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/getting_started/index.html b/files/zh-cn/learn/html/introduction_to_html/getting_started/index.html
new file mode 100644
index 0000000000..34fa761a4e
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/getting_started/index.html
@@ -0,0 +1,683 @@
+---
+title: 开始学习 HTML
+slug: learn/HTML/Introduction_to_HTML/Getting_started
+tags:
+ - HTML
+ - 元素
+ - 属性
+ - 指南
+translation_of: Learn/HTML/Introduction_to_HTML/Getting_started
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{NextMenu("Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">本文将从 HTML 最基础的部分讲起,对元素(Element)、属性(Attribute)以及可能涉及的一些重要术语进行介绍,并明确它们在语言中所处的位置。本文还会讲解 HTML 元素和页面的组织方式,以及其他一些重要的基本语言特性。学习的过程中,我们会使用 HTML 做一些好玩的事情。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>具备计算机基础知识,安装了<a href="/zh-CN/Learn/Getting_started_with_the_web/Installing_basic_software">基础软件环境</a>,了解基本的<a href="/zh-CN/Learn/Getting_started_with_the_web/Dealing_with_files">文件组织方法</a>。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>熟悉 HTML 语言的基础知识,掌握几个 HTML 元素的基本用法。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="什么是_HTML">什么是 HTML?</h2>
+
+<p>{{glossary("HTML")}} (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的<strong>标记语言</strong>。HTML 可复杂、可简单,一切取决于开发者。它由一系列的<strong>元素({{Glossary("Element", "elements")}})</strong>组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签( {{Glossary("Tag", "tags")}})可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。 例如下面一行内容:</p>
+
+<pre>我的猫咪脾气爆:)</pre>
+
+<p>可以将这行文字封装成一个段落(Paragraph){{htmlelement("p")}}元素来使其在单独一行呈现:</p>
+
+<pre class="brush: html">&lt;p&gt;我的猫咪脾气爆:)&lt;/p&gt;</pre>
+
+<div class="note">
+<p><strong>注:</strong>HTML 标签不区分大小写。也就是说,输入标签时既可以使用大写字母也可以使用小写字母。例如,标签 {{htmlelement("title")}} 写作<code>&lt;title&gt;<font face="x-locale-heading-primary, zillaslab, Palatino, Palatino Linotype, x-locale-heading-secondary, serif"><span style="background-color: #fff3d4;">、</span></font></code><code>&lt;TITLE&gt;</code>、<code>&lt;Title&gt;</code>、<code>&lt;TiTlE&gt;</code>,等等都可以正常工作。不过,从一致性、可读性等各方面来说,最好仅使用小写字母。</p>
+</div>
+
+<h2 id="剖析一个_HTML_元素">剖析一个 HTML 元素</h2>
+
+<p>让我们进一步探讨我们的段落元素:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/16475/element.png" style="display: block; height: 255px; margin: 0px auto; width: 821px;"></p>
+
+<p>这个元素的主要部分有:</p>
+
+<ol>
+ <li><strong>开始标签</strong>(Opening tag):包含元素的名称(本例为 p),被左、右角括号所包围。表示元素从这里开始或者开始起作用 —— 在本例中即段落由此开始。</li>
+ <li><strong>结束标签</strong>(Closing tag):与开始标签相似,只是其在元素名之前包含了一个斜杠。这表示着元素的结尾 —— 在本例中即段落在此结束。初学者常常会犯忘记包含结束标签的错误,这可能会产生一些奇怪的结果。</li>
+ <li><strong>内容</strong>(Content):元素的内容,本例中就是所输入的文本本身。</li>
+ <li><strong>元素</strong>(Element):开始标签、结束标签与内容相结合,便是一个完整的元素。</li>
+</ol>
+
+<h3 id="主动学习:创建第一个_HTML_元素">主动学习:创建第一个 HTML 元素</h3>
+
+<p>通过使用标签<code>&lt;em&gt;</code>和<code>&lt;/em&gt;</code>(在前面放置<code>&lt;em&gt;</code>打开元素,在后面放置<code>&lt;/em&gt;</code>关闭元素)——这使得行内容变成斜体强调!你可以在“输出”区域中实时查看更改更新。</p>
+
+<p>如果写错了,可随时按【重置】按钮重新开始,如果实在想不出来,可按【显示答案】按钮查看答案。</p>
+
+<div class="hidden">
+<h6 id="Playable_code">Playable code</h6>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 50px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '刀枪剑戟 斧钺钩叉';
+ const answer = '&lt;em&gt;刀枪剑戟 斧钺钩叉&lt;/em&gt;';
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code', 700, 400, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="嵌套元素">嵌套元素</h3>
+
+<p>你也可以把元素放到其它元素之中——这被称作嵌套。如果我们想要表明我们的小猫脾气很暴躁,可以将<strong>“爆”</strong>嵌套在{{htmlelement("strong")}} 中,意味着这个单词被着重强调:</p>
+
+<pre class="brush: html">&lt;p&gt;我的猫咪脾气&lt;strong&gt;爆&lt;/strong&gt;:)&lt;/p&gt;</pre>
+
+<p>你需要确保元素被正确的嵌套:在上面的例子中我们先打开{{htmlelement("p")}}元素,然后才打开{{htmlelement("strong")}}元素,因此必须先将{{htmlelement("strong")}}元素关闭,然后再去关闭{{htmlelement("p")}}元素。下面的例子是错误的:</p>
+
+<pre class="example-bad brush: html">&lt;p&gt;我的猫咪脾气&lt;strong&gt;爆:)&lt;/p&gt;&lt;/strong&gt;</pre>
+
+<p>所有的元素都需要正确的打开和关闭,这样才能按你所想的方式展现。如果像上述的例子一样进行了错误的嵌套,那么浏览器会去猜测你想要表达的意思,但很有可能会得出错误的结果。所以永远不要这么做!</p>
+
+<h3 id="块级元素和内联元素">块级元素和内联元素</h3>
+
+<p>在HTML中有两种你需要知道的重要元素类别,块级元素和内联元素。</p>
+
+<ul>
+ <li>块级元素在页面中以块的形式展现 —— 相对于其前面的内容它会出现在新的一行,其后的内容也会被挤到下一行展现。块级元素通常用于展示页面上结构化的内容,例如段落、列表、导航菜单、页脚等等。一个以block形式展现的块级元素不会被嵌套进内联元素中,但可以嵌套在其它块级元素中。</li>
+ <li>内联元素通常出现在块级元素中并环绕文档内容的一小部分,而不是一整个段落或者一组内容。内联元素不会导致文本换行:它通常出现在一堆文字之间例如超链接元素{{htmlelement("a")}}或者强调元素{{htmlelement("em")}}和 {{htmlelement("strong")}}。</li>
+</ul>
+
+<p>看一看下面的例子:</p>
+
+<pre class="brush: html">&lt;em&gt;第一&lt;/em&gt;&lt;em&gt;第二&lt;/em&gt;&lt;em&gt;第三&lt;/em&gt;
+
+&lt;p&gt;第四&lt;/p&gt;&lt;p&gt;第五&lt;/p&gt;&lt;p&gt;第六&lt;/p&gt;
+</pre>
+
+<p>{{htmlelement("em")}} 是一个内联元素,所以就像你在下方可以看到的,第一行代码中的三个元素都没有间隙的展示在了同一行。而{{htmlelement("p")}}是一个块级元素,所以第二行代码中的每个元素分别都另起了新的一行展现,并且每个段落间都有一些间隔(这是因为默认的浏览器有着默认的展示{{htmlelement("p")}}元素的<a href="/en-US/docs/Learn/CSS/Introduction_to_CSS">CSS styling</a>)。</p>
+
+<p>{{ EmbedLiveSample('块级元素和内联元素', 700, 200, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<div class="note">
+<p><strong>注</strong>: HTML5重新定义了元素的类别:见 <a href="https://html.spec.whatwg.org/multipage/indices.html#element-content-categories">元素内容分类</a>(<a href="/zh-CN/docs/Web/Guide/HTML/Content_categories">译文</a>)。尽管这些新的定义更精确,但却比上述的 “块级元素” 和 “内联元素” 更难理解,因此在之后的讨论中仍使用旧的定义。</p>
+</div>
+
+<div class="note">
+<p><strong>注</strong>: 在这篇文章中提到的“块”和“内联”,不应该与 <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model#Types_of_CSS_boxes">the types of CSS boxes</a> 中的同名术语相混淆. 尽管他们默认是相关的,但改变CSS显示类型并不会改变元素的分类,也不会影响它可以包含和被包含于哪些元素。防止这种混淆也是HTML5摒弃这些术语的原因之一。</p>
+</div>
+
+<div class="note">
+<p><strong>注</strong>: 你可以查阅包含了块级元素和内联元素列表的参考页面—see <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements">Block-level elements</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements">Inline elements</a>.</p>
+</div>
+
+<h3 id="空元素">空元素</h3>
+
+<p>不是所有元素都拥有开始标签,内容,结束标签。一些元素只有一个标签,通常用来在此元素所在位置插入/嵌入一些东西。例如:元素{{htmlelement("img")}}是用来在元素{{htmlelement("img")}}所在位置插入一张指定的图片。例子如下:</p>
+
+<pre class="brush: html">&lt;img src="https://roy-tian.github.io/learning-area/extras/getting-started-web/beginner-html-site/images/firefox-icon.png"&gt;</pre>
+
+<p>显示如下:</p>
+
+<p>{{ EmbedLiveSample('空元素', 700, 300, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<div class="note">
+<p><strong>注</strong>: 空元素(Empty elements) 有时也被叫作 <em>void elements</em>.</p>
+</div>
+
+<h2 id="属性">属性</h2>
+
+<p>元素也可以拥有属性,如下:</p>
+
+<p><img alt='&amp;amp;amp;lt;p class="editor-note">我的猫咪脾气爆&amp;amp;amp;lt;/p>' src="https://mdn.mozillademos.org/files/16476/attribute.png" style="display: block; margin: 0px auto;"></p>
+
+<p>属性包含元素的额外信息,这些信息不会出现在实际的内容中。在上述例子中,这个class属性给元素赋了一个识别的名字(id),这个名字此后可以被用来识别此元素的样式信息和其他信息。</p>
+
+<p>一个属性必须包含如下内容:</p>
+
+<ol>
+ <li>一个空格,在属性和元素名称之间。(如果已经有一个或多个属性,就与前一个属性之间有一个空格。)</li>
+ <li>属性名称,后面跟着一个等于号。</li>
+ <li>一个属性值,由一对引号“ ”引起来。</li>
+</ol>
+
+<h3 id="学习实践:为一个元素添加属性">学习实践:为一个元素添加属性</h3>
+
+<p>另一个例子是关于元素{{htmlelement("a")}}的——元素{{htmlelement("a")}}是锚,它使被标签包裹的内容成为一个超链接。此元素也可以添加大量的属性,其中几个如下:</p>
+
+<ul>
+ <li><code>href</code>: 这个属性声明超链接的web地址,当这个链接被点击浏览器会跳转至href声明的web地址。例如:<code>href="https://www.mozilla.org/"</code>。</li>
+ <li><code>title</code>: 标题<code>title</code>属性为超链接声明额外的信息,比如你将链接至的那个页面。例如:<code>title="The Mozilla homepage"</code>。当鼠标悬停在超链接上面时,这部分信息将以工具提示的形式显示。</li>
+ <li><code>target</code>: 目标<code>target</code>属性用于指定链接如何呈现出来。例如,<code>target="_blank"</code>将在新标签页中显示链接。如果你希望在当前标签页显示链接,忽略这个属性即可。</li>
+</ul>
+
+<p>编辑下面的文本框中的内容,使之变成指向任一个你喜欢的web地址的链接。首先,添加&lt;a&gt;元素,然后为它添加href属性和title属性。你可以即时的在输出区域看到你修改的内容。你应该可以看到一个连接,当鼠标移上此链接时会显示title属性值,当点击此链接时会跳转到href指定的web地址。记住:在元素名和属性名之间以及两个属性之间要有一个空格。</p>
+
+<p>如果写错了,可随时按【重置】按钮重新开始,如果实在想不出来,可按【显示答案】按钮查看答案。</p>
+
+<div class="hidden">
+<h6 id="Playable_code2">Playable code2</h6>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 50px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '&lt;p&gt;欲练葵花宝典,需引刀自宫&lt;/p&gt;';
+ const answer = '&lt;p&gt;欲练&lt;a href="https://zh.wikipedia.org/zh-hans/葵花宝典" title="葵花宝典简介" target="_blank"&gt;葵花宝典&lt;/a&gt;,需引刀自宫&lt;/p&gt;';
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code2', 700, 350, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<div class="blockIndicator note">
+<p><strong>译注:</strong>可到 Github 在线使用这个“<a class="external external-icon" href="https://roy-tian.github.io/learning-area/extras/tools/playable-code">代码操场</a>”。</p>
+</div>
+
+<h3 id="布尔属性">布尔属性</h3>
+
+<p>有时你会看到没有值的属性,它是合法的。这些属性被称为布尔属性,他们只能有跟它的属性名一样的属性值。例如{{htmlattrxref("disabled", "input")}} 属性,他们可以标记表单输入使之变为不可用(变灰色),此时用户不能向他们输入任何数据。</p>
+
+<pre>&lt;input type="text" disabled="disabled"&gt;</pre>
+
+<p>方便起见,我们完全可以将其写成以下形式(我们还提供了一个非禁止输入的表单元素供您参考,以作为对比):</p>
+
+<pre class="brush: html">&lt;!-- 使用disabled属性来防止终端用户输入文本到输入框中 --&gt;
+&lt;input type="text" disabled&gt;
+
+&lt;!-- 下面这个输入框没有disabled属性,所以用户可以向其中输入 --&gt;
+&lt;input type="text"&gt;
+</pre>
+
+<p>上面两段HTML代码产生的效果如下:</p>
+
+<p>{{ EmbedLiveSample('布尔属性', 700, 100, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="省略包围属性值的引号">省略包围属性值的引号</h3>
+
+<p>当你浏览那些粗糙的web网站,你将会看见各种各样奇怪的标记风格,其中就有不给属性值添加引号。在某些情况下它是被允许的,但是其他情况下会破坏你的标记。例如,我们可以写一个只拥有一个href属性的链接,如下:</p>
+
+<pre class="example-bad brush: html">&lt;a href=<code>https://www.mozilla.org/</code>&gt;收藏页面&lt;/a&gt;</pre>
+
+<p>然而,当我们再添加一个title属性时就会出错,如下:</p>
+
+<pre class="example-bad brush: html">&lt;a href=<code>https://www.mozilla.org/</code> title=The Mozilla homepage&gt;收藏页面&lt;/a&gt;</pre>
+
+<p>此时浏览器会误解你的标记,它会把title属性理解为三个属性——title的属性值为"The“,另外还有两个布尔属性“<code>Mozilla</code>”和“<code>homepage</code>”。看下面的例子,它明显不是我们所期望的,并且在这个编码里面它会报错或者出现异常行为。试一试把鼠标移动到链接上,看会显示什么title属性值!</p>
+
+<p>{{ EmbedLiveSample('省略包围属性值的引号', 700, 100, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<p>我们建议始终添加引号——这样可以避免很多问题,并且使代码更易读。</p>
+
+<h3 id="单引号或者双引号?">单引号或者双引号?</h3>
+
+<p>在目前为止,本章内容所有的属性都是由双引号来包裹。也许在一些HTML中,你以前也见过单引号。这只是风格的问题,你可以从中选择一个你喜欢的。以下两种情况都可以:</p>
+
+<pre class="brush: html">&lt;a href="http://www.example.com"&gt;示例站点链接&lt;/a&gt;
+
+&lt;a href='http://www.example.com'&gt;示例站点链接&lt;/a&gt;</pre>
+
+<p>但你应该注意单引号和双引号不能在一个属性值里面混用。下面的语法是错误的:</p>
+
+<pre class="example-bad brush: html">&lt;a href="http://www.example.com'&gt;示例站点链接&lt;/a&gt;</pre>
+
+<p>在一个HTML中已使用一种引号,你可以在此引号中嵌套另外一种引号:</p>
+
+<pre class="brush: html">&lt;a href="http://www.example.com" title="你觉得'好玩吗'?"&gt;示例站点链接&lt;/a&gt;</pre>
+
+<p>如果你想将引号当作文本显示在html中,你就必须使用<a href="#实体引用:_在HTML中包含特殊字符">实体引用</a>。</p>
+
+<h2 id="剖析HTML文档">剖析HTML文档</h2>
+
+<p>学习了一些HTML元素的基础知识,这些元素单独一个是没有意义的。现在我们来学习这些特定元素是怎么被结合起来,从而形成一个完整的HTML页面的:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;title&gt;我的测试站点&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;这是我的页面&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>分析如下:</p>
+
+<ol>
+ <li><code>&lt;!DOCTYPE html&gt;</code>: 声明文档类型. 很久以前,早期的HTML(大约1991年2月),文档类型声明类似于链接,规定了HTML页面必须遵从的良好规则,能自动检测错误和其他有用的东西。使用如下:
+
+ <pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</pre>
+ 然而这种写法已经过时了,这些内容已成为历史。只需要知道 <code>&lt;!DOCTYPE html&gt;</code> 是最短有效的文档声明。</li>
+ <li><code>&lt;html&gt;&lt;/html&gt;</code>: <code>&lt;html&gt;</code>元素。这个元素包裹了整个完整的页面,是一个根元素。</li>
+ <li><code>&lt;head&gt;&lt;/head&gt;</code>: <code>&lt;head&gt;元素</code>. 这个元素是一个容器,它包含了所有你想包含在HTML页面中但不想在HTML页面中显示的内容。这些内容包括你想在搜索结果中出现的关键字和页面描述,CSS样式,字符集声明等等。以后的章节能学到更多关于&lt;head&gt;元素的内容。</li>
+ <li><code>&lt;meta charset="utf-8"&gt;</code>: 这个元素设置文档使用utf-8字符集编码,utf-8字符集包含了人类大部分的文字。基本上他能识别你放上去的所有文本内容。毫无疑问要使用它,并且它能在以后避免很多其他问题。</li>
+ <li><code>&lt;title&gt;&lt;/title&gt;</code>: 设置页面标题,出现在浏览器标签上,当你标记/收藏页面时它可用来描述页面。</li>
+ <li><code>&lt;body&gt;&lt;/body&gt;</code>: <code>&lt;body&gt;</code>元素。 包含了你访问页面时所有显示在页面上的内容,文本,图片,音频,游戏等等。</li>
+</ol>
+
+<h3 id="学习实践:为HTML文档添加一些特征">学习实践:为HTML文档添加一些特征</h3>
+
+<p>如果你想在你的本地练习写一些HTML页面,你可以这样做:</p>
+
+<ol>
+ <li>复制上面的HTML页面例子。</li>
+ <li>在编辑器创建一个新文件。</li>
+ <li>粘贴代码到这个文件。</li>
+ <li>保存为<code>index.html</code>.</li>
+</ol>
+
+<div class="note">
+<p><strong>注:</strong>可在 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/getting-started/index.html">学习区代码仓库</a> 上查看该示例。</p>
+</div>
+
+<p>你可以打开浏览器看看这段代码的效果是什么样的,然后改变代码刷新浏览器看看新的结果。最开始的代码是这样的效果:</p>
+
+<p><img alt="A simple HTML page that says This is my page" src="https://mdn.mozillademos.org/files/12279/template-screenshot.png" style="display: block; height: 365px; margin: 0px auto; width: 595px;">所以在这段练习中, 你可以用你的电脑在本地编写运行代码,如上所述, 你也可以在下面的简单可编辑窗口编辑它 (此时这个简单的可编辑窗口仅显示&lt;body&gt;标签内的内容.) 我们希望你能够实践以下步骤:</p>
+
+<ul>
+ <li>就在{{htmlelement("body")}} 元素开始标签下方,为这个文档添加一个主标题。这个主标题应该被包含在<code>&lt;h1&gt;</code>开始标签和<code>&lt;/h1&gt;</code>结束标签之间。</li>
+ <li>编辑这个段落以包含一些你感兴趣的文本。</li>
+ <li>把字词包含在开始标记<code>&lt;strong&gt;</code>和结束标记<code>&lt;/strong&gt;</code>之间可以使他们以粗体显示,从而突出任何重要的字词。</li>
+ <li>在你的文档中添加一个超文本链接,<a href="https://developer.mozilla.org/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started#%E5%AD%A6%E4%B9%A0%E5%AE%9E%E8%B7%B5%EF%BC%9A%E4%B8%BA%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E6%B7%BB%E5%8A%A0%E5%B1%9E%E6%80%A7">如前所述</a>。</li>
+ <li>在段落下方向你的文档添加一张图片,<a href="https://developer.mozilla.org/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started#%E7%A9%BA%E5%85%83%E7%B4%A0">如前所述</a>。如果你尝试对不同的图片(在你的本地电脑或是在Web的其他位置上)添加链接,那你就更棒了。</li>
+</ul>
+
+<p>如果写错了,可随时按【重置】按钮重新开始,如果实在想不出来,可按【显示答案】按钮查看答案。</p>
+
+<div class="hidden">
+<h6 id="Playable_code3">Playable code3</h6>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 50px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '&lt;p&gt;相思无用,惟别而已。别期若有定,千般煎熬又何如?莫道黯然销魂,何处柳暗花明?&lt;/p&gt;';
+ const answer =
+`&lt;h1&gt;经典回忆&lt;/h1&gt;
+&lt;p&gt;
+ 相思无用,惟别而已。别期若有定,千般煎熬又何如?莫道黯然销魂,何处&lt;strong&gt;柳暗花明&lt;/strong&gt;?&lt;br&gt;
+ ——《&lt;a href="https://zh.wikipedia.org/zh-hans/神鵰俠侶"&gt;神雕侠侣&lt;/a&gt;》
+&lt;/p&gt;
+&lt;img src="https://roy-tian.github.io/learning-area/extras/tools/playable-code/images/sdxl.jfif"&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+
+</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code3', 700, 600,"", "", "hide-codepen-jsfiddle")}}</p>
+
+<h3 id="HTML中的空白">HTML中的空白</h3>
+
+<p>在上面的例子中,你可能已经注意到了在代码中包含了很多的空格——这是没有必要的;下面的两个代码片段是等价的:</p>
+
+<pre class="brush: html">&lt;p&gt;狗 狗 很 呆 萌。&lt;/p&gt;
+
+&lt;p&gt;狗 狗 很
+ 呆 萌。&lt;/p&gt;</pre>
+
+<p>无论你在HTML元素的内容中使用多少空格(包括空白字符,包括换行),当渲染这些代码的时候,HTML解释器会将连续出现的空白字符减少为一个单独的空格符。</p>
+
+<p>那么为什么我们会在HTML元素的嵌套中使用那么多的空白呢? 答案就是为了可读性 —— 如果你的代码被很好地进行格式化,那么就很容易理解你的代码是怎么回事,反之就只有聚做一团的混乱.。在我们的HTML代码中,我们让每一个嵌套的元素以两个空格缩进。 你使用什么风格来格式化你的代码取决于你 (比如所对于每层缩进使用多少个空格),但是你应该坚持使用某种风格。</p>
+
+<h2 id="实体引用:_在HTML中包含特殊字符">实体引用: 在HTML中包含特殊字符</h2>
+
+<p>在HTML中,字符 <code>&lt;</code>, <code>&gt;</code>,<code>"</code>,<code>'</code> 和 <code>&amp;</code> 是特殊字符. 它们是HTML语法自身的一部分, 那么你如何将这些字符包含进你的文本中呢, 比如说如果你真的想要在文本中使用符号&amp;或者小于号, 而不想让它们被浏览器视为代码并被解释?</p>
+
+<p>我们必须使用字符引用 —— 表示字符的特殊编码, 它们可以在那些情况下使用. 每个字符引用以符号&amp;开始, 以分号(;)结束.</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">原义字符</th>
+ <th scope="col">等价字符引用</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>&lt;</td>
+ <td>&amp;lt;</td>
+ </tr>
+ <tr>
+ <td>&gt;</td>
+ <td>&amp;gt;</td>
+ </tr>
+ <tr>
+ <td>"</td>
+ <td>&amp;quot;</td>
+ </tr>
+ <tr>
+ <td>'</td>
+ <td>&amp;apos;</td>
+ </tr>
+ <tr>
+ <td>&amp;</td>
+ <td>&amp;amp;</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>在下面的例子中你可以看到两个段落,它们在谈论web技术:</p>
+
+<pre class="brush: html">&lt;p&gt;HTML 中用 &lt;p&gt; 来定义段落元素。&lt;/p&gt;
+
+&lt;p&gt;HTML 中用 &amp;lt;p&amp;gt; 来定义段落元素&lt;/p&gt;</pre>
+
+<p>在下面的实时输出中,你会看到第一段是错误的,因为浏览器会认为第二个&lt;p&gt;是开始一个新的段落! 第二段是正确的,因为我们用字符引用来代替了角括号('&lt;'和'&gt;'符号).</p>
+
+<p>{{ EmbedLiveSample('实体引用:_在HTML中包含特殊字符', 700, 200, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<div class="note">
+<p><strong>提示</strong>: 维基百科上有一个包含所有可用HTML字符实体引用的列表:<a href="http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references">XML和HTML字符实体引用列表</a>。</p>
+</div>
+
+<h2 id="HTML注释">HTML注释</h2>
+
+<p>如同大部分的编程语言一样,在HTML中有一种可用的机制来在代码中书写注释 —— 注释是被浏览器忽略的,而且是对用户不可见的,它们的目的是允许你描述你的代码是如何工作的和不同部分的代码做了什么等等。 如果你在半年后重新返回你的代码库,而且不能记起你所做的事情 —— 或者当你处理别人的代码的时候, 那么注释是很有用的.</p>
+
+<p>为了将一段HTML中的内容置为注释,你需要将其用特殊的记号&lt;!--和--&gt;包括起来, 比如:</p>
+
+<pre class="brush: html">&lt;p&gt;我在注释外!&lt;/p&gt;
+
+&lt;!-- &lt;p&gt;我在注释内!&lt;/p&gt; --&gt;</pre>
+
+<p>正如你下面所见的那样,第一段出现在了实时输出中,但是第二段却没有。</p>
+
+<p>{{ EmbedLiveSample('HTML注释', 700, 100,"", "", "hide-codepen-jsfiddle") }}</p>
+
+<h2 id="总结">总结</h2>
+
+<p>你已经来到了这篇文章的结尾 —— 希望你享受你的基础的HTML学习的旅程。 在这里你应该可以理解HTML语言的全貌, 它在基础的级别是如何工作,而且可以使用一些元素和属性。 在这个模块的后续文章中,我们会深入一些你已经见过的东西的细节,并且介绍一些新的HTML的特性。未完待续!</p>
+
+<div class="note">
+<p><strong>提示</strong>: 现在,你将开始学习更多关于HTML的知识,你可能也想了解一些层叠样式列表(<a href="https://developer.mozilla.org/zh-CN/docs/Learn/CSS">CSS</a>)的基础知识。CSS是一种用来设计网页样式的语言(比如,用它改变字体、颜色或页面布局等)。你很快就会发现,HTML和CSS能很好地协调配合。</p>
+</div>
+
+<div>{{NextMenu("Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/html_text_fundamentals/index.html b/files/zh-cn/learn/html/introduction_to_html/html_text_fundamentals/index.html
new file mode 100644
index 0000000000..39547cae31
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/html_text_fundamentals/index.html
@@ -0,0 +1,915 @@
+---
+title: HTML 文字处理基础
+slug: learn/HTML/Introduction_to_HTML/HTML_text_fundamentals
+tags:
+ - HTML指南
+ - 学习
+translation_of: Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML", "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">HTML的主要工作是编辑文本结构和文本内容(也称为语义{{glossary("semantics")}}),以便浏览器能正确的显示。 本文介绍了 {{glossary("HTML")}}的使用方法:在一段文本中添加标题和段落,强调语句,创建列表等等。</p>
+
+<table class="learn-box standard-table" style="height: 161px; width: 663px;">
+ <tbody>
+ <tr>
+ <th scope="row">先决条件:</th>
+ <td>阅读 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a>,了解基本的 HTML 知识。</td>
+ </tr>
+ <tr>
+ <th scope="row">目的:</th>
+ <td>学习如何用标记(段落、标题、列表、强调、引用)来建立基础文本页面的文本结构和文本内容。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="基础_标题和段落">基础: 标题和段落</h2>
+
+<p>大部分的文本结构由标题和段落组成。 不管是小说、报刊、教科书还是杂志等。</p>
+
+<p><img alt="An example of a newspaper front cover, showing use of a top level heading, subheadings and paragraphs." src="https://mdn.mozillademos.org/files/16552/peoples.jpg" style="display: block; height: 493px; margin: 0px auto; width: 622px;" title="An example of a newspaper front cover, showing use of a top level heading, subheadings and paragraphs."></p>
+
+<p>内容结构化会使读者的阅读体验更轻松,更愉快。</p>
+
+<p>在HTML中,每个段落是通过 {{htmlelement("p")}} 元素标签进行定义的, 比如下面这样:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;我是一个段落,千真万确。&lt;/p&gt;</pre>
+
+<p>每个标题(Heading)是通过“标题标签”进行定义的:</p>
+
+<pre class="brush: html notranslate">&lt;h1&gt;我是文章的标题&lt;/h1&gt;</pre>
+
+<p>这里有六个标题元素标签 —— <code>&lt;h1&gt;</code>、<code>&lt;h2&gt;</code>、<code>&lt;h3&gt;</code>、<code>&lt;h4&gt;</code>、<code>&lt;h5&gt;</code>、<code>&lt;h6&gt;</code>。每个元素代表文档中不同级别的内容; <code>&lt;h1&gt;</code> 表示主标题(the main heading),<code>&lt;h2&gt;</code> 表示二级子标题(subheadings),<code>&lt;h3&gt;</code> 表示三级子标题(sub-subheadings),等等。</p>
+
+<h3 id="编辑结构层次">编辑结构层次</h3>
+
+<p>这里举一个例子。在一个故事中,&lt;h1&gt;表示故事的名字,&lt;h2&gt;表示每个章节的标题, &lt;h3&gt;表示每个章节下的子标题,以此类推。</p>
+
+<pre class="brush: html notranslate">&lt;h1&gt;三国演义&lt;/h1&gt;
+
+&lt;p&gt;罗贯中&lt;/p&gt;
+
+&lt;h2&gt;第一回 宴桃园豪杰三结义 斩黄巾英雄首立功&lt;/h2&gt;
+
+&lt;p&gt;话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉……&lt;/p&gt;
+
+&lt;h2&gt;第二回 张翼德怒鞭督邮 何国舅谋诛宦竖&lt;/h2&gt;
+
+&lt;p&gt;且说董卓字仲颖,陇西临洮人也,官拜河东太守,自来骄傲。当日怠慢了玄德,张飞性发,便欲杀之……&lt;/p&gt;
+
+&lt;h3&gt;却说张飞&lt;/h3&gt;
+
+&lt;p&gt;却说张飞饮了数杯闷酒,乘马从馆驿前过,见五六十个老人,皆在门前痛哭。飞问其故,众老人答曰:“督邮逼勒县吏,欲害刘公;我等皆来苦告,不得放入,反遭把门人赶打!”……&lt;/p&gt;</pre>
+
+<p>所涉及的元素具体代表什么,完全取决于作者编辑的内容,只要层次结构是合理的。在创建此类结构时,您只需要记住一些最佳实践:</p>
+
+<ul>
+ <li>您应该最好只对每个页面使用一次&lt;h1&gt; — 这是顶级标题,所有其他标题位于层次结构中的下方。</li>
+ <li>请确保在层次结构中以正确的顺序使用标题。不要使用&lt;h3&gt;来表示副标题,后面跟&lt;h2&gt;来表示副副标题 - 这是没有意义的,会导致奇怪的结果。</li>
+ <li>在可用的六个标题级别中,您应该只在每页使用不超过三个,除非您认为有必要使用更多。具有许多级别的文档(即,较深的标题层次结构)变得难以操作并且难以导航。在这种情况下,如果可能,建议将内容分散在多个页面上。</li>
+</ul>
+
+<h3 id="为什么我们需要结构化">为什么我们需要结构化?</h3>
+
+<p>回答这个问题前,让我们先来看一段文档示例“<a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/html-text-formatting/text-start.html">text-start.html</a>” — 并从运行这段文档示例(美味的豆沙食谱)开始。首先,您可以复制一份并保存到本地机器上,在之后的练习中您将用到它。在这个文档的主体 (body)中包含了多个内容 — 这些内容没有做任何标记,但是编辑时使用了换行 (输入回车/换行跳转到下一行)处理。</p>
+
+<p>然而,当您在浏览器中打开文档时,您会看到文本显示为一整块!</p>
+
+<p><img alt="A webpage that shows a wall of unformatted text, because there are no elements on the page to structure it." src="https://mdn.mozillademos.org/files/12972/text-no-formatting.png" style="display: block; height: 420px; margin: 0px auto; width: 594px;"></p>
+
+<p>这是因为没有元素给内容结构,所以浏览器不知道什么是标题,什么是段落。此外:</p>
+
+<ul>
+ <li>用户在阅读网页时,往往会快速浏览以查找相关内容,经常只是阅读开头的标题(我们通常在一个网页上会花费很少的时间 <a class="external external-icon" href="http://www.nngroup.com/articles/how-long-do-users-stay-on-web-pages/">spend a very short time on a web page</a>)。如果用户不能在几秒内看到一些有用的内容,他们很可能会感到沮丧并离开。</li>
+ <li>对您的网页建立索引的搜索引擎将标题的内容视为影响网页搜索排名的重要关键字。没有标题,您的网页在{{glossary("SEO")}}(搜索引擎优化)方面效果不佳。</li>
+ <li>严重视力障碍者通常不会阅读网页;他们用听力来代替。完成这项工作的软件叫做屏幕阅读器(<a class="external external-icon" href="http://en.wikipedia.org/wiki/Screen_reader" title="screen readers">screen reader</a>)。该软件提供了快速访问给定文本内容的方法。在使用的各种技术中,它们通过朗读标题来提供文档的概述,让用户能快速找到他们需要的信息。如果标题不可用,用户将被迫听到整个文档的大声朗读。</li>
+ <li>使用{{glossary("CSS")}}样式化内容,或者使用{{glossary("JavaScript")}}做一些有趣的事情,你需要包含相关内容的元素,所以CSS / JavaScript可以有效地定位它。</li>
+</ul>
+
+<p>因此,我们需要给我们的内容结构标记。</p>
+
+<h3 id="实践操作_编辑我们的内容结构">实践操作: 编辑我们的内容结构</h3>
+
+<p>让我们直接跳进一个实例。在下面的示例中,向“Input”字段中的原始文本添加元素,使其在“Output”字段中显示为标题和两个段落。</p>
+
+<p>如果您犯了错误,您可以使用<em>重置</em>按钮进行重置。如果卡住,请按<em>显示解决方案</em>按钮以查看答案。</p>
+
+<div class="hidden">
+<h6 id="Playable_code">Playable code</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 200px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '静夜思 床前明月光 疑是地上霜 举头望明月 低头思故乡';
+ const answer =
+`&lt;h1&gt;静夜思&lt;/h1&gt;
+&lt;p&gt;床前明月光 疑是地上霜&lt;/p&gt;
+&lt;p&gt;举头望明月 低头思故乡&lt;/p&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code', 700, 500, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="为什么我们需要语义?">为什么我们需要语义?</h3>
+
+<p>在我们身边的任何地方都要依赖语义学 — 我们依靠以前的经验就知道日常事物都代表什么;当我们看到什么,我们就会知道它代表什么。举个例子, 我们知道红色交通灯表示“停止”,绿色交通灯表示”通行“。 如果运用了错误的语义,事情会迅速地变得非常棘手 (难道有某个国家使用红色代表通行?我不希望如此)</p>
+
+<p>同样的道理,我们需要确保使用了正确的元素来给予内容正确的意思、作用以及外形。在这里,{{htmlelement("h1")}} 元素也是一个语义元素,<span class="short_text" id="result_box" lang="zh-CN"><span>它给出了包裹在您的页面上用来表示顶级标题的角色(或意义)的文本</span></span>。</p>
+
+<pre class="brush: html notranslate">&lt;h1&gt;这是一个顶级标题&lt;/h1&gt;</pre>
+
+<p>一般来说,浏览器会给它一个更大的字形来让它看上去像个标题(虽然你可以使用CSS让它变成任何你想要的样式。更重要的是,它的语义值将以多种方式被使用,比如通过搜索引擎和屏幕阅读器(上文提到过的)。</p>
+
+<p>在另一方面,你可以让任一元素看起来像一个顶级标题,如下:</p>
+
+<pre class="brush: html notranslate">&lt;span style="font-size: 32px; margin: 21px 0;"&gt;这是顶级标题吗?&lt;/span&gt;</pre>
+
+<p>这是一个 {{htmlelement("span")}} 元素,它没有语义。当您想要对它用CSS(或者JS)时,您可以用它包裹内容,且不需要附加任何额外的意义(在未来的课程中你会发现更多这类元素)。我们已经对它使用了CSS来让它看起来像一个顶级标题。然而,由于它没有语义值,所以它不会有任何上文提到的帮助。最好的方法是使用相关的HTML元素来标记这个项目。</p>
+
+<h2 id="列表_Lists">列表 Lists</h2>
+
+<p>现在,让我们学习一下列表。列表在生活中随处可见——从购物清单到回家的路线方案,再到本教程的说明列表。在网络上,列表也随处可见,大致包含了三种不同类型的列表。</p>
+
+<h3 id="无序_Unordered">无序 Unordered</h3>
+
+<p>无序列表用于标记列表项目顺序无关紧要的列表 — 让我们以早点清单为例。</p>
+
+<pre class="notranslate">豆浆
+油条
+豆汁
+焦圈
+</pre>
+
+<p>每份无序的清单从 {{htmlelement("ul")}} 元素开始——需要包裹清单上所有被列出的项目:</p>
+
+<pre class="brush: html notranslate">&lt;ul&gt;
+豆浆
+油条
+豆汁
+焦圈
+&lt;/ul&gt;</pre>
+
+<p>然后就是用 {{htmlelement("li")}} 元素把每个列出的项目单独包裹起来:</p>
+
+<pre class="brush: html notranslate">&lt;ul&gt;
+ &lt;li&gt;豆浆&lt;/li&gt;
+ &lt;li&gt;油条&lt;/li&gt;
+ &lt;li&gt;豆汁&lt;/li&gt;
+ &lt;li&gt;焦圈&lt;/li&gt;
+&lt;/ul&gt;</pre>
+
+<h4 id="实践操作_标记无序列表">实践操作: 标记无序列表</h4>
+
+<p>尝试编辑下面的示例来创建一个HTML无序列表。</p>
+
+<div class="hidden">
+<h6 id="Playable_code_2">Playable code 2</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 100px; }
+ .input { min-height: 100px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original = '豆浆 油条 豆汁 焦圈';
+ const answer =
+`&lt;ul&gt;
+&lt;li&gt;豆浆&lt;/li&gt;
+&lt;li&gt;油条&lt;/li&gt;
+&lt;li&gt;豆汁&lt;/li&gt;
+&lt;li&gt;焦圈&lt;/li&gt;
+&lt;/ul&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_2', 700, 400, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="有序_Ordered">有序 Ordered</h3>
+
+<p>有序列表需要按照项目的顺序列出来——让我们以一组方向为例:</p>
+
+<pre class="notranslate">沿着条路走到头
+右转
+直行穿过第一个十字路口
+在第三个十字路口处左转
+继续走 300 米,学校就在你的右手边
+</pre>
+
+<p>这个标记的结构和无序列表一样,除了需要用{{htmlelement("ol")}} 元素将所有项目包裹, 而不是<code>&lt;ul&gt;:</code></p>
+
+<pre class="brush: html notranslate">&lt;ol&gt;
+ &lt;li&gt;沿着条路走到头&lt;/li&gt;
+ &lt;li&gt;右转&lt;/li&gt;
+ &lt;li&gt;直行穿过第一个十字路口&lt;/li&gt;
+ &lt;li&gt;在第三个十字路口处左转&lt;/li&gt;
+ &lt;li&gt;继续走 300 米,学校就在你的右手边&lt;/li&gt;
+&lt;/ol&gt;</pre>
+
+<h4 id="实践操作_标记有序列表">实践操作: 标记有序列表</h4>
+
+<p>尝试编辑下面的示例来创建一个HTML有序列表:</p>
+
+<div class="hidden">
+<h6 id="Playable_code_3">Playable code 3</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 120px; }
+ .input { min-height: 120px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original =
+`沿着条路走到头
+右转
+直行穿过第一个十字路口
+在第三个十字路口处左转
+继续走 300 米,学校就在你的右手边`;
+ const answer =
+`&lt;ol&gt;
+ &lt;li&gt;沿着条路走到头&lt;/li&gt;
+ &lt;li&gt;右转&lt;/li&gt;
+ &lt;li&gt;直行穿过第一个十字路口&lt;/li&gt;
+ &lt;li&gt;在第三个十字路口处左转&lt;/li&gt;
+ &lt;li&gt;继续走 300 米,学校就在你的右手边&lt;/li&gt;
+&lt;/ol&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_3', 700, 500, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="实践操作_标记我们的食谱">实践操作: 标记我们的食谱</h3>
+
+<p>到了这里,你拥有了所有你需要的信息来标记我们的食谱样例。你可以选择从<a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/html-text-formatting/text-start.html">text-start.html</a>复制一份文件并保存在本地,打开它进行编辑,或者在下面的例子中进行编辑。因为在本地你可以保存你的项目,所以在本地做这个工作可能更好。而如果你在下面可编辑的样本中作业,下一次你打开这个网站时你可能会丢失你的数据。各有利弊吧。</p>
+
+<div class="hidden">
+<h6 id="Playable_code_4">Playable code 4</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 200px; }
+ .input { min-height: 200px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original =
+`宫保鸡丁的做法
+宫保鸡丁,川菜系中的传统名菜,由鸡丁、干辣椒、花生米等炒制而成。由于其入口鲜辣,鸡肉的鲜嫩配合花生的香脆,广受大众欢迎。
+相传宫保鸡丁是清朝光绪年间的署理四川总督丁宝桢所发明,是他招待客人时叫家厨煮的菜肴。由于丁宝桢后来被封为东宫少保(太子少保),所以被称为“丁宫保”,而这道菜亦被称为“宫保鸡丁”
+
+原料
+去骨鸡胸肉:一斤八两
+干红辣椒:八钱
+炸花生米:一两五钱
+花椒粒:两大匙
+葱:两根(切段)
+蛋白:一个
+淀粉:三大匙
+酱油:两大匙
+蒜末:半茶匙
+糖:半茶匙
+白醋:一茶匙
+色拉油:适量
+盐:两茶匙
+
+做法
+先用蛋白一个、盐半茶匙及淀粉两大匙搅拌均匀,调成“腌料”,鸡胸肉切成约一厘米见方的碎丁并用“腌料”搅拌均匀,腌渍半小时。
+用酱油一大匙、淀粉水一大匙、糖半茶匙、盐四分之一茶匙、白醋一茶匙、蒜末半茶匙调拌均匀,调成“综合调味料”。
+鸡丁腌好以后,色拉油下锅烧热,先将鸡丁倒入锅内,用大火快炸半分钟,炸到变色之后,捞出来沥干油汁备用。
+在锅里留下约两大匙油,烧热后将切好的干辣椒下锅,用小火炒香后,再放入花椒粒和葱段一起爆香。随后鸡丁重新下锅,用大火快炒片刻后,再倒入“综合调味料”继续快炒。
+如果你采用正宗川菜做法,最后只需加入花生米,炒拌几下就可以起锅了。
+如果你在北方,可加入黄瓜丁、胡萝卜丁和花生米,翻炒后起锅。
+
+大千鸡
+张大千居加拿大期间,曾按自己喜好改变宫保鸡丁的做法,并传授当地厨师,厨师将之命名为“大千鸡”,以兹纪念。大千鸡与宫保鸡丁不同之处,是使用经细工去皮、出骨、剔膜的鸡腿肉,以干辣椒、豆瓣酱为味,而且不用花生。
+`;
+ const answer =
+`&lt;h1&gt;宫保鸡丁的做法&lt;/h1&gt;
+&lt;p&gt;宫保鸡丁,川菜系中的传统名菜,由鸡丁、干辣椒、花生米等炒制而成。由于其入口鲜辣,鸡肉的鲜嫩配合花生的香脆,广受大众欢迎。&lt;/p&gt;
+&lt;p&gt;相传宫保鸡丁是清朝光绪年间的署理四川总督丁宝桢所发明,是他招待客人时叫家厨煮的菜肴。由于丁宝桢后来被封为东宫少保(太子少保),所以被称为“丁宫保”,而这道菜亦被称为“宫保鸡丁”&lt;/p&gt;
+
+&lt;h2&gt;原料&lt;/h2&gt;
+&lt;ul&gt;
+ &lt;li&gt;去骨鸡胸肉:一斤八两&lt;/li&gt;
+ &lt;li&gt;干红辣椒:八钱&lt;/li&gt;
+ &lt;li&gt;炸花生米:一两五钱&lt;/li&gt;
+ &lt;li&gt;花椒粒:两大匙&lt;/li&gt;
+ &lt;li&gt;葱:两根(切段)&lt;/li&gt;
+ &lt;li&gt;蛋白:一个&lt;/li&gt;
+ &lt;li&gt;淀粉:三大匙&lt;/li&gt;
+ &lt;li&gt;酱油:两大匙&lt;/li&gt;
+ &lt;li&gt;蒜末:半茶匙&lt;/li&gt;
+ &lt;li&gt;糖:半茶匙&lt;/li&gt;
+ &lt;li&gt;白醋:一茶匙&lt;/li&gt;
+ &lt;li&gt;色拉油:适量&lt;/li&gt;
+ &lt;li&gt;盐:两茶匙&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;做法&lt;/h2&gt;
+&lt;ol&gt;
+ &lt;li&gt;先用蛋白一个、盐半茶匙及淀粉两大匙搅拌均匀,调成“腌料”,鸡胸肉切成约一厘米见方的碎丁并用“腌料”搅拌均匀,腌渍半小时。&lt;/li&gt;
+ &lt;li&gt;用酱油一大匙、淀粉水一大匙、糖半茶匙、盐四分之一茶匙、白醋一茶匙、蒜末半茶匙调拌均匀,调成“综合调味料”。&lt;/li&gt;
+ &lt;li&gt;鸡丁腌好以后,色拉油下锅烧热,先将鸡丁倒入锅内,用大火快炸半分钟,炸到变色之后,捞出来沥干油汁备用。&lt;/li&gt;
+ &lt;li&gt;在锅里留下约两大匙油,烧热后将切好的干辣椒下锅,用小火炒香后,再放入花椒粒和葱段一起爆香。随后鸡丁重新下锅,用大火快炒片刻后,再倒入“综合调味料”继续快炒。&lt;/li&gt;
+ &lt;li&gt;如果你采用正宗川菜做法,最后只需加入花生米,炒拌几下就可以起锅了。&lt;/li&gt;
+ &lt;li&gt;如果你在北方,可加入黄瓜丁、胡萝卜丁和花生米,翻炒后起锅。&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;h2&gt;大千鸡&lt;/h2&gt;
+&lt;p&gt;张大千居加拿大期间,曾按自己喜好改变宫保鸡丁的做法,并传授当地厨师,厨师将之命名为“大千鸡”,以兹纪念。大千鸡与宫保鸡丁不同之处,是使用经细工去皮、出骨、剔膜的鸡腿肉,以干辣椒、豆瓣酱为味,而且不用花生。&lt;/p&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_4', 700, 800, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<p>如果你感到棘手,你可以随时按下<em>Show solution</em>按钮,或者在我们的github repo上检查我们的 <a href="https://github.com/mdn/learning-area/blob/master/html/introduction-to-html/html-text-formatting/text-complete.html">text-complete.html</a> 样例。</p>
+
+<h3 id="嵌套列表_Nesting_lists">嵌套列表 Nesting lists</h3>
+
+<p><span id="result_box" lang="zh-CN"><span>将一个列表嵌入到另一个列表是完全可以的。</span> <span>你可能想让一些子项目列在首项目之下。</span><span>让我们从食谱示例中获取第二个列表:</span></span></p>
+
+<pre class="brush: html notranslate">&lt;ol&gt;
+ &lt;li&gt;先用蛋白一个、盐半茶匙及淀粉两大匙搅拌均匀,调成“腌料”,鸡胸肉切成约一厘米见方的碎丁并用“腌料”搅拌均匀,腌渍半小时。&lt;/li&gt;
+ &lt;li&gt;用酱油一大匙、淀粉水一大匙、糖半茶匙、盐四分之一茶匙、白醋一茶匙、蒜末半茶匙调拌均匀,调成“综合调味料”。&lt;/li&gt;
+ &lt;li&gt;鸡丁腌好以后,色拉油下锅烧热,先将鸡丁倒入锅内,用大火快炸半分钟,炸到变色之后,捞出来沥干油汁备用。&lt;/li&gt;
+ &lt;li&gt;在锅里留下约两大匙油,烧热后将切好的干辣椒下锅,用小火炒香后,再放入花椒粒和葱段一起爆香。随后鸡丁重新下锅,用大火快炒片刻后,再倒入“综合调味料”继续快炒。&lt;/li&gt;
+ &lt;li&gt;如果你采用正宗川菜做法,最后只需加入花生米,炒拌几下就可以起锅了。&lt;/li&gt;
+ &lt;li&gt;如果你在北方,可加入黄瓜丁、胡萝卜丁和花生米,翻炒后起锅。&lt;/li&gt;
+ &lt;/ol&gt;</pre>
+
+<p>由于最后两项与它们的前一项非常密切相关(它们看起来更像该项的子项或选项),将它们编辑成无序列表,并嵌套在该项的子项中可能更合理。就像下面这样:</p>
+
+<pre class="brush: html notranslate">&lt;ol&gt;
+ &lt;li&gt;先用蛋白一个、盐半茶匙及淀粉两大匙搅拌均匀,调成“腌料”,鸡胸肉切成约一厘米见方的碎丁并用“腌料”搅拌均匀,腌渍半小时。&lt;/li&gt;
+ &lt;li&gt;用酱油一大匙、淀粉水一大匙、糖半茶匙、盐四分之一茶匙、白醋一茶匙、蒜末半茶匙调拌均匀,调成“综合调味料”。&lt;/li&gt;
+ &lt;li&gt;鸡丁腌好以后,色拉油下锅烧热,先将鸡丁倒入锅内,用大火快炸半分钟,炸到变色之后,捞出来沥干油汁备用。&lt;/li&gt;
+ &lt;li&gt;在锅里留下约两大匙油,烧热后将切好的干辣椒下锅,用小火炒香后,再放入花椒粒和葱段一起爆香。随后鸡丁重新下锅,用大火快炒片刻后,再倒入“综合调味料”继续快炒。
+ &lt;ul&gt;
+ &lt;li&gt;如果你采用正宗川菜做法,最后只需加入花生米,炒拌几下就可以起锅了。&lt;/li&gt;
+ &lt;li&gt;如果你在北方,可加入黄瓜丁、胡萝卜丁和花生米,翻炒后起锅。&lt;/li&gt;
+ &lt;/ul&gt;
+  &lt;/li&gt;
+&lt;/ol&gt;</pre>
+
+<p>尝试回到上一个实践操作的例子中,并更新第二个列表。</p>
+
+<h2 id="重点强调">重点强调</h2>
+
+<p>在日常用语中,我们常常会加重某个字的读音,或者用加粗等方式突出某句话的重点。与此类似,HTML 也提供了相应的标签,用于标记某些文本,使其具有加粗、倾斜、下划线等效果。下面,我们将学习一些最常见的标签。</p>
+
+<h3 id="强调">强调</h3>
+
+<p>在口语表达中,我们有时会强调某些字,用来改变这句话的意思。同样地,在书面用语中,我们可以使用斜体字来达到同样的效果。例如,下面两个句子便有不同的意思:</p>
+
+<p>I am glad you weren't late.</p>
+
+<p>I am <em>glad</em> you weren't <em>late</em>. (ps: 此句中"<em>glad"</em>和"late"为斜体字体)</p>
+
+<p>第一句话听起来真的像松了一口气因为没有迟到。相反,第二句话听起来具有讽刺性而且有隐含的攻击性,表达对一个人迟到的恼怒。</p>
+
+<p>在HTML中我们用{{htmlelement("em")}}(emphasis)元素来标记这样的情况。这样做既可以让文档读起来更有趣,也可以被屏幕阅读器识别出来,并以不同的语调发出。浏览器默认风格为斜体,但你不应该纯粹使用这个标签来获得斜体风格,为了获得斜体风格,你应该使用{{htmlelement("span")}}元素和一些CSS,或者是{{htmlelement("i")}}元素(见下文)。</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;I am &lt;em&gt;glad&lt;/em&gt; you weren't &lt;em&gt;late&lt;/em&gt;.&lt;/p&gt;</pre>
+
+<h3 id="非常重要">非常重要</h3>
+
+<p>为了强调重要的词,在口语方面我们往往用重音强调,在文字方面则是用粗体字来达到强调的效果。例如下面这段:</p>
+
+<p>This liquid is <strong>highly toxic</strong>.</p>
+
+<p>I am counting on you. <strong>Do not</strong> be late!</p>
+
+<p>在HTML中我们用{{htmlelement("strong")}} (strong importance) 元素来标记这样的请况。这样做既可以让文档更加地有用,也可以被屏幕阅读器识别出来,并以不同的语调发出。浏览器默认风格为粗体,但你不应该纯粹使用这个标签来获得粗体风格,为了获得粗体风格,你应该使用{{htmlelement("span")}}元素和一些CSS,或者是 {{htmlelement("b")}} 元素 (见下文)。</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;This liquid is &lt;strong&gt;highly toxic&lt;/strong&gt;.&lt;/p&gt;
+
+&lt;p&gt;I am counting on you. &lt;strong&gt;Do not&lt;/strong&gt; be late!&lt;/p&gt;</pre>
+
+<p>如有需要你可以将strong元素和em元素嵌套在其他的标签中:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;This liquid is &lt;strong&gt;highly toxic&lt;/strong&gt; —
+if you drink it, &lt;strong&gt;you may &lt;em&gt;die&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;</pre>
+
+<h3 id="实践操作_我们是重要的!">实践操作: 我们是重要的!</h3>
+
+<p>在这个实践操作中,我们提供了可编辑的例子。在这个例子中,我们想让你把斜体(em)和加粗(strong)放在你认为重要的词汇上,仅仅为了练习。</p>
+
+<div class="hidden">
+<h6 id="Playable_code_5">Playable code 5</h6>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html lang="zh-CN"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;style&gt;
+ body { font-family: '微软雅黑', Helvetica, Arial, sans-serif; margin: 10px; background: #f5f9fa; }
+ h2 { font-size: 16px; }
+ code, textarea { font-family: Consolas, Menlo, monospace; }
+ .output { min-height: 150px; }
+ .input { min-height: 150px; width: 95%; }
+ .a11y-label { margin: 0; text-align: right; font-size: 0.7rem; width: 98%; }
+ .controls { width: 96%; text-align: right; }
+ &lt;/style&gt;
+
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;h2&gt;实时输出&lt;/h2&gt;
+ &lt;div class="output"&gt;&lt;/div&gt;
+
+ &lt;h2&gt;可编辑代码&lt;/h2&gt;
+ &lt;p class="a11y-label"&gt;按 ESC 退出编辑区域,按 Tab 可插入制表符 &lt;code&gt;'\t'&lt;/code&gt; &lt;/p&gt;
+ &lt;textarea id="code" class="input"&gt;&lt;/textarea&gt;
+
+ &lt;div class="controls"&gt;
+ &lt;button id="btn-reset"&gt;重置&lt;/button&gt;
+ &lt;button id="btn-solution"&gt;显示答案&lt;/button&gt;
+ &lt;/div&gt;
+ &lt;script&gt;
+ const btnReset = document.getElementById('btn-reset');
+ const btnSolution = document.getElementById('btn-solution');
+ const blockOutput = document.querySelector('.output');
+ const blockInput = document.querySelector('.input');
+ const original =
+`AlphaGo 李世乭五番棋
+
+&lt;p&gt;2016年3月8日到3月15日,韩国职业棋士李世乭(이세돌)九段与由 Google DeepMind 开发的计算机围棋软件 AlphaGo 对弈的五局三胜制围棋比赛在韩国首尔举行。结果为 AlphaGo 以四胜一负的战绩击败李世乭。赛后韩国棋院授予 AlphaGo 荣誉九段的称号。&lt;/p&gt;`;
+ const answer =
+`&lt;h1&gt;AlphaGo 李世乭五番棋&lt;/h1&gt;
+
+&lt;p&gt;&lt;strong&gt;2016年3月8日&lt;/strong&gt;到&lt;strong&gt;3月15日&lt;/strong&gt;,韩国职业棋士&lt;strong&gt;李世乭(이세돌)&lt;em&gt;九段&lt;/em&gt;&lt;/strong&gt;与由 Google DeepMind 开发的计算机围棋软件 &lt;strong&gt;AlphaGo&lt;/strong&gt; 对弈的五局三胜制围棋比赛在韩国&lt;strong&gt;首尔&lt;/strong&gt;举行。结果为 AlphaGo 以&lt;strong&gt;四胜一负&lt;/strong&gt;的战绩击败李世乭。赛后韩国棋院授予 AlphaGo &lt;strong&gt;荣誉九段&lt;/strong&gt;的称号。&lt;/p&gt;`;
+ let userEntry = "";
+
+ init();
+ btnReset.addEventListener('click', init);
+
+ btnSolution.addEventListener('click', () =&gt; {
+ if (btnSolution.textContent === '显示答案') {
+ blockInput.value =
+ blockOutput.innerHTML = answer;
+ btnSolution.textContent = '隐藏答案';
+ } else {
+ blockInput.value =
+ blockOutput.innerHTML = userEntry;
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ blockInput.addEventListener('keydown', (e) =&gt; {
+ switch (e.key) {
+ case 'Tab':
+ e.preventDefault();
+ insertAtCursor('\t');
+ break;
+ case "Escape":
+ blockInput.blur();
+ break;
+ }
+ });
+
+ blockInput.addEventListener('keyup', () =&gt; {
+ userEntry = blockInput.value;
+ blockOutput.innerHTML = blockInput.value;
+ if (btnSolution.textContent === '隐藏答案') {
+ btnSolution.textContent = '显示答案';
+ }
+ });
+
+ function init() {
+ userEntry =
+ blockOutput.innerHTML =
+ blockInput.value = original;
+ btnSolution.textContent = '显示答案';
+ }
+
+ function insertAtCursor(text) {
+ const scrollPos = blockInput.scrollTop;
+ const cursorPos = blockInput.selectionStart;
+
+ const front = blockInput.value.substring(0, cursorPos);
+ const back = blockInput.value.substring(
+ blockInput.selectionEnd, blockInput.value.length);
+
+ blockInput.value = front + text + back;
+ blockInput.selectionStart =
+ blockInput.selectionEnd = cursorPos + text.length;
+ blockInput.focus();
+ blockInput.scrollTop = scrollPos;
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+</div>
+
+<p>{{ EmbedLiveSample('Playable_code_5', 700, 500, "", "", "hide-codepen-jsfiddle") }}</p>
+
+<h3 id="斜体字、粗体字、下划线...">斜体字、粗体字、下划线...</h3>
+
+<p>迄今为止我们已经讨论的元素都是意义清楚的语义元素。{{htmlelement("b")}}, {{htmlelement("i")}}, 和 {{htmlelement("u")}} 的情况却有点复杂。它们出现于人们要在文本中使用粗体、斜体、下划线但CSS仍然不被完全支持的时期。像这样的元素,仅仅影响表象而且没有语义,被称为<strong>表象元素(presentational elements)</strong>并且不应该再被使用。因为正如我们在之前看到的,语义对可访问性,SEO(搜索引擎优化)等非常重要。</p>
+
+<p>HTML5用新的语义规则重新定义了<code>&lt;b&gt;</code>,<code>&lt;i&gt;</code>和<code>&lt;u&gt;</code>,使得它们的语言显得稍微有点混乱。</p>
+
+<p>这里是最好的经验法则:如果没有更合适的元素,那么使用 <code>&lt;b&gt;</code>、<code>&lt;i&gt;</code> 或 <code>&lt;u&gt;</code> 来表达传统上的粗体、斜体或下划线表达的意思是合适的。然而,始终拥有<a href="/zh-CN/docs/learn/Accessibility">可访问性</a>的思维模式是至关重要的。斜体的概念对人们使用屏幕阅读器是没有帮助的,对使用其他书写系统而不是拉丁文书写系统的人们也是没有帮助的。</p>
+
+<ul>
+ <li>{{HTMLElement('i')}} 被用来传达传统上用斜体表达的意义:外国文字,分类名称,技术术语,一种思想……</li>
+ <li>{{HTMLElement('b')}} 被用来传达传统上用粗体表达的意义:关键字,产品名称,引导句……</li>
+ <li>{{HTMLElement('u')}} 被用来传达传统上用下划线表达的意义:专有名词,拼写错误……</li>
+</ul>
+
+<div class="note">
+<p>使用下划线的忠告:因为我们常常会认为网页中的下划线代表着一个超链接<strong>,</strong>所以最好只用下划线来代表超链接。而在语义适合的情况下不得不使用&lt;u&gt;元素时,可以使用CSS来改变&lt;u&gt;元素对应的下划线的默认样式,从而和超链接的下划线区分开来。下面是一个具体的例子:</p>
+</div>
+
+<pre class="brush: html notranslate">&lt;!-- 学名 --&gt;
+&lt;p&gt;
+ 红喉北蜂鸟(学名:&lt;i&gt;Archilocus colubris&lt;/i&gt;)
+ 是北美东部最常见的蜂鸟品种。
+&lt;/p&gt;
+
+&lt;!-- 舶来词 --&gt;
+&lt;p&gt;
+ 菜单上有好多舶来词汇,比如 &lt;i lang="uk-latn"&gt;vatrushka&lt;/i&gt;(东欧乳酪面包),
+ &lt;i lang="id"&gt;nasi goreng&lt;/i&gt;(印尼炒饭)以及&lt;i lang="fr"&gt;soupe à l'oignon&lt;/i&gt;(法式洋葱汤)。
+&lt;/p&gt;
+
+&lt;!-- 已知的错误书写 --&gt;
+&lt;p&gt;
+ 总有一天我会改掉写&lt;u style="text-decoration-line: underline; text-decoration-style: wavy;"&gt;措字&lt;/u&gt;的毛病。
+&lt;/p&gt;
+
+&lt;!-- 在一组指令中突出显示关键字 --&gt;
+&lt;ol&gt;
+ &lt;li&gt;
+ &lt;b&gt;切&lt;/b&gt;下两片面包,
+ &lt;/li&gt;
+ &lt;li&gt;
+ 在两片面包中间&lt;b&gt;夹入&lt;/b&gt;一片西红柿和一片生菜叶。
+ &lt;/li&gt;
+&lt;/ol&gt;</pre>
+
+<h2 id="总结">总结</h2>
+
+<p>至此,本文应该给您做了一个很好的了解,如何开始在HTML中标记文本,并介绍了一些最重要的元素。在这一领域还有许多语义元素,<span id="result_box" lang="zh-CN"><span>我们将在后面的“更多语义元素”文章中看到更多的语义元素。</span> <span>在下一篇文章中,我们将详细介绍如何创建超链接(</span></span><a href="/en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">create hyperlinks</a><span lang="zh-CN"><span>),它可能是Web上最重要的元素。</span></span></p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML", "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/index.html b/files/zh-cn/learn/html/introduction_to_html/index.html
new file mode 100644
index 0000000000..4452927531
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/index.html
@@ -0,0 +1,67 @@
+---
+title: HTML 介绍
+slug: learn/HTML/Introduction_to_HTML
+tags:
+ - HTML介绍
+ - 文本
+ - 结构
+ - 链接
+translation_of: Learn/HTML/Introduction_to_HTML
+---
+<div>{{LearnSidebar}}</div>
+
+<p class="summary">就其核心而言, {{glossary("HTML")}} 是一种相当简单的、由不同<a href="https://developer.mozilla.org/zh-CN/docs/Glossary/元素" title="zh-CN/docs/Glossary/Element">元素</a>组成的标记语言,它可以应用于文本片段,使文本在文档中具有不同的含义(它是一个段落吗?它是一个项目列表吗?它是一个表格吗?),将文档结构化为逻辑块(文档是否有头部?有三列内容?有一个导航菜单?),并且可以将图片,影像等内容嵌入到页面中。本模块将介绍前两个,并且介绍一些理解HTML所需的基本概念和语法。</p>
+
+<h2 id="前提">前提</h2>
+
+<p>在开始这个模块之前,你不需要预先具有任何HTML的知识,但是你需要至少熟悉一些使用电脑的基础,会被动地使用网络(也就是仅需要看着它,浏览内容)。你应该为电脑配置一个基本的工作环境,这在<a href="https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/Installing_basic_software">安装基本软件</a>的页面中有详细说明,并且需要懂得如何创建和管理文件,这在<a href="https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/Dealing_with_files">处理文件</a>页面中有详细说明 —— 它们都是我们纯新手<a href="https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web">web开发入门</a>模块的一部分。</p>
+
+<div class="note">
+<p><strong>注意:</strong>如果你工作在一个无权创建自己文件的电脑/平板/其他设备上,你需要在一个在线编程工具上试验 (大多数)代码示例,如 <a href="http://jsbin.com/">JSBin</a> 或者 <a href="https://glitch.com/">Glitch</a>等。</p>
+</div>
+
+<h2 id="指南">指南</h2>
+
+<p>这个模块包含以下文章,这些文章会帮你过一遍HTML所有的基本理论,并且提供足够的实践机会。</p>
+
+<dl>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started">HTML入门</a></dt>
+ <dd>涵盖了HTML绝对基础的知识来帮助你入门——我们定义元素、属性和其他重要术语,以及它们属于语言的哪个部分。我们也会展示一个典型的HTML 页面是如何被结构化的,以及一个 HTML 元素是如何被结构化的 ,并且解释另一些基础但重要的语言特性。一路下来,我们会与一些 HTML一起玩耍,来激发你的兴趣!</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">Head中有什么?HTML中的元数据</a></dt>
+ <dd>当页面被加载后HTML中的head部分<strong>是不会</strong>被显示在web浏览器中的。它包含了许多信息,例如网页的标题{{htmlelement("title")}},指向{{glossary("CSS")}}的链接(如果你想用CSS来设计HTML内容的样式),指向自定义网站图标的链接和一些元数据(关于HTML本身的数据,例如它的作者和描述这个文档的关键字)。</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理基础 </a></dt>
+ <dd>HTML的主要工作之一就是给予文本意义(也被叫做<strong>语义</strong>),所以浏览器就知道如何正确的显示文本了。这篇文章关注于如何用HTML来将文本块分解为结构化的标题和段落、强调和加粗单词 、创建列表和其他。</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></dt>
+ <dd>超链接真的很重要 - 它们是使Web成为一个Web。本文介绍了创建链接所需的语法,并讨论了链接的最佳实践。</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文本排版</a></dt>
+ <dd>HTML中有许多其他元素可以用于格式化文本,我们没有在<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理基础</a>中提到它们。这些元素不太知名,但了解它们仍然有用。在这篇文章里,你将学习如何标记引文、描述列表、计算机代码和其他类似的文本、下标和上标、联系信息等。</dd>
+ <dt><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和网站结构</a></dt>
+ <dd>除了定义页面的各个部分(例如“段落”或“图像”)外,HTML也用于定义网站的区域(例如“标题”,“导航菜单”,“主内容列“)。本文探讨如何规划基本网站结构,以及如何编写HTML以表示此结构。</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">调试 HTML</a></dt>
+ <dd>编写HTML是好的,但如果出现了什么问题,而且你没能找到代码中的错误在哪里的话,本文将向你介绍一些可以帮上忙的工具。</dd>
+</dl>
+
+<h2 id="考核">考核</h2>
+
+<p>以下考核将测试你对上述指南中HTML基础知识的理解。</p>
+
+<dl>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">制造一份信件</a></dt>
+ <dd>我们或早或晚都学会了如何写一封信,这也是一个不错的用来测试我们的文本格式化技能例子!所以在这个评估中,你会得到一封信来标记。</dd>
+ <dt><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content"> 结构化页面内容</a></dt>
+ <dd>此评估测试你能否使用HTML构建简单的内容页面,其中包含页眉、页脚、导航菜单、主要内容和侧边栏。</dd>
+</dl>
+
+<h2 id="相关链接">相关链接</h2>
+
+<dl>
+ <dt><a href="https://teach.mozilla.org/activities/web-lit-basics/">网络文化基础 1</a></dt>
+ <dd>一个优秀的Mozilla基础课程,探索和测试在HTML模块介绍中讨论的许多技能。学习者熟悉阅读,写作和参与这个六部分模块的网络。通过生产和协作掌握网络的基础。</dd>
+ <dt></dt>
+</dl>
+
+<div class="note">
+<h2 id="反馈">反馈</h2>
+
+<p><a href="https://www.surveygizmo.com/s3/4871248/MDN-Guides-Survey">点击这里进入我们的调查</a>来协助我们完善这份指南和教程.</p>
+</div>
diff --git a/files/zh-cn/learn/html/introduction_to_html/marking_up_a_letter/index.html b/files/zh-cn/learn/html/introduction_to_html/marking_up_a_letter/index.html
new file mode 100644
index 0000000000..fc20a9c177
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/marking_up_a_letter/index.html
@@ -0,0 +1,103 @@
+---
+title: 标记信件
+slug: learn/HTML/Introduction_to_HTML/Marking_up_a_letter
+tags:
+ - HTML
+ - 初学者
+ - 文件头
+ - 文本
+ - 标记
+ - 格式
+ - 测验
+ - 超链接
+translation_of: Learn/HTML/Introduction_to_HTML/Marking_up_a_letter
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Debugging_HTML", "Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">写信是每个人的必备技能,它也是测验文本格式化技能的一个不错的办法呀! 本次测验要求你为你一封写好的信做出标记,以测验你基础和高级的 HTML 文本格式化技能,包括超链接等等。此外将测验你对一些 HTML <code>&lt;head&gt;</code> 内容的熟悉程度。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>阅读并掌握以下文章的内容:<a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a> 、<a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a>、<a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a>、<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a> 和 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a>。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>测验对 HTML 文本格式和超链接基本和高级用法、HTML <code>&lt;head&gt;</code> 内容的理解程度。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="起点">起点</h2>
+
+<p>开始测验之前,请先<a href="https://github.com/roy-tian/learning-area/tree/master/html/introduction-to-html/marking-up-a-letter-start">下载信件的起始文本和CSS代码</a>。然后用文本编辑器(用 <a class="external-icon external" href="http://jsbin.com/">JSBin</a> 或 <a class="external-icon external" href="https://thimble.mozilla.org/">himble</a> 等在线编辑工具亦可)创建一个新的 <code>.html</code> 文件来进行测验。</p>
+
+<h2 id="项目概要">项目概要</h2>
+
+<p>本项目中,你的任务为一封大学内网信件进行标记,这封信是研究人员对一名学生有关申请博士学位问题的回复。</p>
+
+<p>块/结构语义:</p>
+
+<ul>
+ <li>你应该使用适当的结构来构造整体文档,包括doctype、<a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/html" title="HTML &lt;html>元素表示HTML文档的根(顶层元素),因此也称为根元素。所有其他元素必须是此元素的后代。"><code>&lt;html&gt;</code></a> 、 <a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/head" title="HTML &lt;head>元素提供有关文档的一般信息(元数据),包括其标题和其脚本和样式表的链接。"><code>&lt;head&gt;</code></a>和<a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/body" title="HTML &lt;body>元素表示HTML文档的内容。文档中只能有一个&lt;body>元素。"><code>&lt;body&gt;</code></a>元素。</li>
+ <li>除下面提到的几点之外,这封信应该被标记成有着段落和标题的结构。 这封信有 1 个顶级标题(“回复:”那行)和 3 个二级标题。</li>
+ <li>使用适当类型的列表标记该学期的开学时间、学习科目和异域舞蹈。</li>
+ <li>两个地址应该放在<code><a href="/zh-CN/docs/Web/HTML/Element/address">&lt;address&gt;</a></code>元素下. 每行的地址应该放在新的一行而不是新的段落.</li>
+</ul>
+
+<p>内联语义:</p>
+
+<ul>
+ <li>应着重显示发信人和收信人的姓名(以及“电话”和“电子邮件”字样)。</li>
+ <li>用适当的元素把文档中的四个日期标记成机器可读的日期。</li>
+ <li>为信中第一个地址和第一个日期设置一个类属性“<code>sender-column</code>”,这样就能通过添加CSS 来使它们右对齐,以符合经典信件的布局。</li>
+ <li>信件正文中有 2 个首字母缩略词/缩写词,标记出它们的扩展形式。</li>
+ <li>正确标注 6 个下标/上标(位于化学方程式、科学计数法中)。</li>
+ <li>试着标记至少对两个单词进行着重(<code>&lt;strong&gt;</code>)/ 强调(<code>&lt;em&gt;</code>)显示。</li>
+ <li>有两个地方应加上超链接,要为它们添加适当的标题。链接指向 https://example.com/ 即可。</li>
+ <li>用适当的元素标记校训和引文。</li>
+</ul>
+
+<p>文档的头部:</p>
+
+<ul>
+ <li>用适当的元标签把文档的字符集声明为 utf-8。</li>
+ <li>用适当的元标签说明信件的作者。</li>
+ <li>用适当的标签引入我们提供的 CSS 代码。</li>
+</ul>
+
+<h2 id="提示和技巧">提示和技巧</h2>
+
+<ul>
+ <li>使用 <a class="external external-icon" href="https://validator.w3.org/">W3C HTML验证器</a> 来验证 HTML,验证通过有额外加分。</li>
+ <li>完成这个测验不需要任何 CSS 知识,只需把现成的 CSS 放到 HTML 元素里就好。</li>
+</ul>
+
+<h2 id="范例">范例</h2>
+
+<p>以下截图展示了这封信标记完成后可能的外观(可 <a class="external external-icon" href="https://roy-tian.github.io/learning-area/html/introduction-to-html/marking-up-a-letter-finished/">在线查看</a>)。</p>
+
+<p><img alt="排版信件截图" src="https://mdn.mozillademos.org/files/16534/letter.jpg" style="border: 1px solid black; display: block; margin: 0px auto;"></p>
+
+<h2 id="测验">测验</h2>
+
+<p>如果你是在课堂上进行这个测验,你可以把作品交给导师或教授去打分了。如果你是在自学,也可以在 <a href="https://discourse.mozilla-community.org/t/learning-web-development-marking-guides-and-questions/16294">本节测验的讨论页</a> 或者 <a href="https://wiki.mozilla.org/IRC">Mozilla 聊天室 </a>的 <a href="irc://irc.mozilla.org/mdn">#mdn</a> 频道取得帮助。要自己先尝试,作弊是不会有收获的!</p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Debugging_HTML", "Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/structuring_a_page_of_content/index.html b/files/zh-cn/learn/html/introduction_to_html/structuring_a_page_of_content/index.html
new file mode 100644
index 0000000000..934ad01b3c
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/structuring_a_page_of_content/index.html
@@ -0,0 +1,104 @@
+---
+title: 构建内容丰富的网页
+slug: learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content
+tags:
+ - HTML
+ - 初学者
+ - 布局
+ - 结构
+ - 设计
+ - 评估
+translation_of: Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenu("Learn/HTML/Introduction_to_HTML/Marking_up_a_letter", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">构建页面内容是一项重要技能,页面构建清晰才能顺利交付进行 CSS 布局。本测验将测试你是否能构思出页面的最终外观,以及是否会选用适当的结构语义。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>完成本章之前的全部课程,特别是 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a>。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>测验网页结构知识和用标记呈现预期布局设计的方法。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="起点">起点</h2>
+
+<p>开始测验前,请先下载 <a class="external external-icon" href="https://raw.githubusercontent.com/roy-tian/learning-area/master/html/introduction-to-html/structuring-a-page-of-content-start/assets.zip">assets.zip</a>。其中包含:</p>
+
+<ul>
+ <li>需要补充结构标记的 HTML 文件。</li>
+ <li>给标记添加样式的 CSS 文件。</li>
+ <li>页面中使用的图片。</li>
+</ul>
+
+<p>可在电脑上创建示例,也可以用 <a class="external external-icon" href="http://jsbin.com/">JSBin</a> 或 <a class="external external-icon" href="https://thimble.mozilla.org/">Thimble</a> 等网站来完成测验。</p>
+
+<h2 id="项目简介">项目简介</h2>
+
+<p>本项目的任务是为“观鸟网”的主页添加结构化的元素,使其可以进行布局设计。需要添加的有:</p>
+
+<ul>
+ <li>页眉(<code>&lt;header&gt;</code>),应充满页面宽度,并包含网站主标题、网站 logo 和导航栏菜单。样式生效后标题和 logo 应显示在在两边,导航栏在它们下方。</li>
+ <li>主内容区域(<code>&lt;main&gt;</code>),应有两栏,其中主区域显示欢迎信息,侧边栏包含一些缩略图。</li>
+ <li>页脚(<code>&lt;footer&gt;</code>),包含版权信息和鸣谢。</li>
+</ul>
+
+<p>你应该为以下内容添加合适的标签:</p>
+
+<ul>
+ <li>页眉</li>
+ <li>导航菜单</li>
+ <li>主要内容</li>
+ <li>欢迎语</li>
+ <li>图片侧边栏</li>
+ <li>页脚</li>
+</ul>
+
+<p>还应:</p>
+
+<ul>
+ <li>添加一个 {{htmlelement("link")}} 元素把现成的 CSS 文件引入页面。</li>
+</ul>
+
+<h2 id="提示">提示</h2>
+
+<ul>
+ <li>可用 <a href="https://validator.w3.org/">W3C </a><a class="external external-icon" href="https://validator.w3.org/">HTML验证器</a> 来验证 HTML;验证通过有额外加分。(有两行包含 “googleapis” 的 <code>&lt;link&gt;</code> 元素用于从 Google Fonts 服务引入自定义字体到页面;它们不会被验证,所以不用担心。)</li>
+ <li>本测验不需要任何 CSS 知识;只需用 HTML 元素添加现成的 CSS 即可。</li>
+ <li>现成的 CSS 已经设计好布局,使用正确的结构元素,页面就会渲染成绿色。</li>
+ <li>如果你遇到困难不知道应该把添加元素到哪里,通常一个好的做法是:画一个简单的页面布局模块图,然后为每个块记录下恰当的元素。</li>
+</ul>
+
+<h2 id="示例">示例</h2>
+
+<p>以下截图展示了添加标记后主页可能的外观:(可 <a class="external external-icon" href="https://roy-tian.github.io/learning-area/html/introduction-to-html/structuring-a-page-of-content-finished/">在线查看</a>)</p>
+
+<p><img alt="测试示例。一个简单的“观鸟网”主页,由页眉、页脚、欢迎信息、收藏照片等部分组成。" src="https://mdn.mozillademos.org/files/16540/bird-watching.png" style="display: block; margin: 0px auto;"></p>
+
+<h2 id="测验">测验</h2>
+
+<p>如果你是在课堂上进行这个测验,你可以把作品交给导师或教授去打分了。如果你是在自学,也可以在 <a href="https://discourse.mozilla.org/t/structuring-a-page-of-content-assignment/24678">本节测验的讨论页</a> 或者 <a href="https://wiki.mozilla.org/IRC">Mozilla 聊天室 </a>的 <a href="irc://irc.mozilla.org/mdn">#mdn</a> 频道取得帮助。要自己先尝试,作弊是不会有收获的!</p>
+
+<p>{{PreviousMenu("Learn/HTML/Introduction_to_HTML/Marking_up_a_letter", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/the_head_metadata_in_html/index.html b/files/zh-cn/learn/html/introduction_to_html/the_head_metadata_in_html/index.html
new file mode 100644
index 0000000000..e61085147b
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/the_head_metadata_in_html/index.html
@@ -0,0 +1,287 @@
+---
+title: <head>标签里有什么? Metadata-HTML中的元数据
+slug: learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML
+tags:
+ - HTML
+ - metadata
+ - 元数据
+ - 教程
+translation_of: Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Getting_started", "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">在页面加载完成的时候,标签{{glossary("Head", "head")}}里的内容,是不会在页面中显示出来的。它包含了像页面的{{htmlelement("title")}}(标题) ,{{glossary("CSS")}}(如果你选择用 CSS 来为 HTML 内容添加样式),指向自定义图标的链接和其他的元数据(描述HTML的数据,比如,作者,和描述文档的重要关键词)。本文将涵盖上述内容并拓展,为您对标记的使用打下一个良好的基础。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>初步了解 HTML(参见 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a>)。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>学习 HTML &lt;head&gt; 标签的概念、用途、基本组成,以及它对 HTML 文档所起的作用。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="什么是_HTML_头部元素">什么是 HTML 头部元素?</h2>
+
+<p>让我们简单回顾一下 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started#%E5%89%96%E6%9E%90HTML%E6%96%87%E6%A1%A3">上一章节的 HTML 文档</a>:</p>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;title&gt;我的测试站点&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;p&gt;这是我的页面&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>HTML {{htmlelement("head")}} 元素与 {{htmlelement("body")}} 元素不同,它的内容不会在浏览器中显示,它的作用是保存页面的一些 {{glossary("Metadata", "元数据")}}。上述示例  head 元素非常简短:</p>
+
+<pre class="brush: html notranslate">&lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;title&gt;我的测试站点&lt;/title&gt;
+&lt;/head&gt;</pre>
+
+<p>然而大型页面的 head 会包含很多元数据。可以用  <a href="/zh-CN/docs/Learn/Discover_browser_developer_tools">开发者工具</a> 查看网页的 head 信息。本节并不打算面面俱到地讲述 head ,只是初步介绍几项 head 中重要的常用元素,让我们开始吧。</p>
+
+<h2 id="添加标题">添加标题</h2>
+
+<p>之前已经讲过 {{htmlelement("title")}},它可以为文档添加标题。别和 {{htmlelement("h1")}} 元素搞混了,{{htmlelement("h1")}} 是为 body 添加标题的。有时候 {{htmlelement("h1")}} 也叫作网页标题。但是二者并不相同。</p>
+
+<ul>
+ <li>{{htmlelement("h1")}} 元素在页面加载完毕时显示在页面中,通常只出现一次,用来标记页面内容的标题(故事名称、新闻摘要,等等)。</li>
+ <li>{{htmlelement("title")}} 元素是一项元数据,用于表示整个 HTML 文档的标题(而不是文档内容)。</li>
+</ul>
+
+<h3 id="主动学习:一个简单的示例">主动学习:一个简单的示例</h3>
+
+<ol>
+ <li>为了开始这个交互式学习,我们希望你到我们的 Github 库中下载一份我们的 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/title-example.html">title-example.html 网页</a>。要做到这一点,你可以选择下面两种操作之一
+
+ <ol>
+ <li>使用你的代码编辑器,从页面中拷贝粘贴代码到一个新的文本文件中,然后将其保存到一个适当的地方。</li>
+ <li>按下页面中的 "Raw" 按钮, 从浏览器的菜单中选择 文件<em>&gt; 另存网页为...</em> , 然后选择一个地方来保存这个文件。</li>
+ </ol>
+ </li>
+ <li>在浏览器中打开文件,你会看到类似这样效果:
+ <p><img alt="A simple web page with the title set to &lt;title> element, and the &lt;h1> set to &lt;h1> element." src="https://mdn.mozillademos.org/files/17388/%E6%A0%87%E9%A2%98%E7%A4%BA%E4%BE%8B.png" style="display: block; height: 393px; margin: 0px auto; width: 650px;">现在很明显的可以看到 <code>&lt;h1&gt;</code> 出现的地方,和  <code>&lt;title&gt;</code> 出现的地方!</p>
+ </li>
+ <li>你应该尝试着在你的代码编辑器中打开这些代码,编辑这些元素的内容,然后在你的浏览器中刷新页面。祝你玩得开心。</li>
+</ol>
+
+<p>元素 <code>&lt;title&gt;</code> 也被以其他的方式使用着。 比如说,如果你尝试为某个页面添加书签,(在火狐浏览器中点击地址栏末尾的星标),你会看到 <code>&lt;title&gt;</code> 的内容被作为建议的书签名。</p>
+
+<p><img alt="Firefox 中将网页添加为书签。书签名根据 &lt;title> 元素自动生成。" src="https://mdn.mozillademos.org/files/17389/%E4%B9%A6%E7%AD%BE%E7%A4%BA%E4%BE%8B.png" style="display: block; height: 497px; margin: 0px auto; width: 650px;"></p>
+
+<p>元素 <code>&lt;title&gt;</code> 的内容也被用在搜索的结果中,正如你即将在下面看到的。</p>
+
+<h2 id="元数据:&lt;meta>元素">元数据:&lt;meta&gt;元素</h2>
+
+<p>元数据就是描述数据的数据,而HTML有一个“官方的”方式来为一个文档添加元数据——  {{htmlelement("meta")}} 元素。当然,其他在这篇文章中提到的东西也可以被当作元数据。有很多不同种类的 <code>&lt;meta&gt;</code> 元素可以被包含进你的页面的&lt;head&gt;元素,但是现在我们还不会尝试去解释所有类型,这只会引起混乱。我们会解释一些你常会看到的类型,先让你有个概念。</p>
+
+<h3 id="指定你的文档中字符的编码">指定你的文档中字符的编码</h3>
+
+<p>在上面的例子中,这行是被包含的:</p>
+
+<pre class="brush: html notranslate">&lt;meta charset="utf-8"&gt;</pre>
+
+<p>这个元素简单的指定了文档的字符编码 —— 在这个文档中被允许使用的字符集。 <code>utf-8</code> 是一个通用的字符集,它包含了任何人类语言中的大部分的字符。 意味着该 web 页面可以显示任意的语言;所以对于你的每一个页面都使用这个设置会是一个好主意!比如说,你的页面可以很好的处理中文和藏文:</p>
+
+<p><img alt="同时包含中文和藏文的网页。将页面编码设置为utf8后,两种语言均可正常显示。" src="https://mdn.mozillademos.org/files/17390/%E7%BC%96%E7%A0%81%E6%AD%A3%E7%A1%AE.png" style="display: block; height: 329px; margin: 0px auto; width: 650px;">比如说,如果你将你的字符集设置为 <code>GBK</code> (中国大陆国标字符集),那么页面将出现乱码:</p>
+
+<p><img alt="同时包含中文和藏文的网页。将页面编码设置为gbk后,藏语无法正常显示。" src="https://mdn.mozillademos.org/files/17391/%E7%BC%96%E7%A0%81%E9%94%99%E8%AF%AF.png" style="display: block; height: 318px; margin: 0px auto; width: 650px;"></p>
+
+<div class="note">
+<p><strong>注</strong>: 一些浏览器(比如Chrome)会自动修正错误的编码,所以取决于你所使用的浏览器,你或许不会看到这个问题。无论如何,你仍然应该为你的页面手动设置编码为<code>utf-8</code>,来避免在其他浏览器中可能出现的潜在问题。</p>
+</div>
+
+<h3 id="交互式学习:_体验字符集">交互式学习: 体验字符集</h3>
+
+<p>为了进行这个练习,回到你在前面&lt;title&gt;章节中获取的HTML模板 (<a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/title-example.html">title-example.html 网页</a>),试着改变其字符集的值为<code>GBK</code>,然后将藏语添加到页面中。这就是我们使用的代码:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;藏语示例:བཀྲ་ཤིས་བདེ་ལེགས།&lt;/p&gt;</pre>
+
+<h3 id="添加作者和描述">添加作者和描述</h3>
+
+<p>许多<code>&lt;meta&gt;</code> 元素包含了<code>name</code> 和 <code>content</code> 特性:</p>
+
+<ul>
+ <li><code>name</code> 指定了meta 元素的类型; 说明该元素包含了什么类型的信息。</li>
+ <li><code>content</code> 指定了实际的元数据内容。</li>
+</ul>
+
+<p>这两个meta 元素对于定义你的页面的作者和提供页面的简要描述是很有用的 。让我们看一个例子:</p>
+
+<pre class="brush: html notranslate">&lt;meta name="author" content="Chris Mills"&gt;
+&lt;meta name="description" content="The MDN Learning Area aims to provide
+complete beginners to the Web with all they need to know to get
+started with developing web sites and applications."&gt;</pre>
+
+<p>指定作者在某些情况下是很有用的:如果你需要联系页面的作者,问一些关于页面内容的问题。 一些内容管理系统能够自动获取页面作者的信息,然后用于某些用途。</p>
+
+<p>指定包含关于页面内容的关键字的页面内容的描述是很有用的,因为它可能或让你的页面在搜索引擎的相关的搜索出现得更多 (这些行为术语上被称为 <a href="/zh-CN/docs/Glossary/SEO">Search Engine Optimization</a>, or {{glossary("SEO")}}.)</p>
+
+<h3 id="实践操作_在搜索引擎中description的使用">实践操作: 在搜索引擎中description的使用</h3>
+
+<p>description也被使用在搜索引擎显示的结果页中。下面通过一个例子来说明</p>
+
+<ol>
+ <li>访问 <a href="https://developer.mozilla.org/zh-CN/">MDN Web Docs</a>。</li>
+ <li>查看网页源代码(<em>通过鼠标右键点击网页在弹出的菜单中选择[查看网页源代码]</em>)</li>
+ <li>找到description的meta标签。就和如下展示的这样:
+ <pre class="brush: html notranslate">&lt;meta name="description" content="The Mozilla Developer Network (MDN) provides
+information about Open Web technologies including HTML, CSS, and APIs for both
+Web sites and HTML5 Apps. It also documents Mozilla products, like Firefox OS."&gt;</pre>
+ </li>
+ <li>现在,在你喜欢的搜索引擎里搜索“MDN Web Docs” (下图展示的是在谷歌搜索里的情况) 。你会看到description <code>&lt;meta&gt;</code> and <code>&lt;title&gt;</code> 元素如何在搜索结果里显示— 很值得这样做哦!</li>
+</ol>
+
+<p><img alt='A Google search result for "MDN Web Docs"' src="https://mdn.mozillademos.org/files/16074/mdn-search-result.png" style="height: 982px; width: 1302px;"></p>
+
+<div class="note">
+<p><strong>Note</strong>:在谷歌搜索里,在主页面链接下面,你将看到一些相关子页面 — 这些是站点链接,可以在 <a href="http://www.google.com/webmasters/tools/">Google's webmaster tools</a> 配置— 一种可以使你的站点对搜索引擎更友好的方式。</p>
+</div>
+
+<div class="note">
+<p><strong>Note</strong>: 许多 <code>&lt;meta&gt;</code> 特性已经不再使用。 例如,keyword <code>&lt;meta&gt;</code> 元素(<code>&lt;meta  name="keywords" content="fill, in, your, keywords, here"&gt;</code>)— 提供关键词给搜索引擎,根据不同的搜索词,查找到相关的网站 — 已经被搜索引擎忽略了, 因为作弊者填充了大量关键词到keyword, 错误地引导搜索结果。</p>
+</div>
+
+<h3 id="其他类型的元数据">其他类型的元数据</h3>
+
+<p>当你在网站上查看源码时,你也会发现其他类型的元数据。你在网站上看到的许多功能都是专有创作,旨在向某些网站(如社交网站)提供可使用的特定信息。</p>
+
+<p>例如,Facebook 编写的元数据协议 <a href="http://ogp.me/">Open Graph Data</a> 为网站提供了更丰富的元数据。在 MDN 源代码中,你会发现:</p>
+
+<pre class="brush: html notranslate">&lt;meta property="og:image" content="https://developer.cdn.mozilla.net/static/img/opengraph-logo.dc4e08e2f6af.png"&gt;
+&lt;meta property="og:description" content="The Mozilla Developer Network (MDN) provides
+information about Open Web technologies including HTML, CSS, and APIs for both Web sites
+and HTML5 Apps. It also documents Mozilla products, like Firefox OS."&gt;
+&lt;meta property="og:title" content="Mozilla Developer Network"&gt;</pre>
+
+<p>上面代码展现的一个效果就是,当你在 Facebook 上链接到 MDN 时,该链接将显示一个图像和描述:这为用户提供更丰富的体验。</p>
+
+<p><img alt="Open graph protocol data from the MDN homepage as displayed on facebook, showing an image, title, and description." src="https://mdn.mozillademos.org/files/12349/facebook-output.png" style="display: block; margin: 0 auto;">Twitter 还拥有自己的类型的专有元数据协议,当网站的 URL 显示在 twitter.com 上时,它具有相似的效果。例如下面:</p>
+
+<pre class="brush: html notranslate">&lt;meta name="twitter:title" content="Mozilla Developer Network"&gt;</pre>
+
+<h2 id="在你的站点增加自定义图标">在你的站点增加自定义图标</h2>
+
+<p>为了进一步丰富你的网站设计,你可以在元数据中添加对自定义图标的引用,这些将在特定的场合中显示。</p>
+
+<p>这个不起眼的图标已经存在很多很多年了,16 x 16 像素是这种图标的第一种类型。你可以看见这些图标出现在浏览器每一个打开的页面中的标签页中中以及在书签面板中的书签页面中。</p>
+
+<p>页面添加图标的方式有:</p>
+
+<ol>
+ <li>将其保存在与网站的索引页面相同的目录中,以.ico格式保存(大多数浏览器将支持更通用的格式,如.gif或.png,但使用ICO格式将确保它能在如Internet Explorer 6一样久远的浏览器显示)</li>
+ <li>将以下行添加到HTML &lt;head&gt;中以引用它:
+ <pre class="brush: html notranslate">&lt;link rel="shortcut icon" href="favicon.ico" type="image/x-icon"&gt;</pre>
+ </li>
+</ol>
+
+<p>现代浏览器在各种场合使用favicons,如打开的页面标签页和书签面板中的书签页面。下面是一个favicon 出现在书签面板中的例子:<img alt="The Firefox bookmarks panel, showing a bookmarked example with a favicon displayed next to it." src="https://mdn.mozillademos.org/files/12351/bookmark-favicon.png" style="display: block; margin: 0 auto;"></p>
+
+<p>如今还有很多其他的图标类型可以考虑。 例如,你可以在 MDN 主页的源代码中找到它:</p>
+
+<pre class="brush: html notranslate">&lt;!-- third-generation iPad with high-resolution Retina display: --&gt;
+&lt;link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://developer.cdn.mozilla.net/static/img/favicon144.a6e4162070f4.png"&gt;
+&lt;!-- iPhone with high-resolution Retina display: --&gt;
+&lt;link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://developer.cdn.mozilla.net/static/img/favicon114.0e9fabd44f85.png"&gt;
+&lt;!-- first- and second-generation iPad: --&gt;
+&lt;link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://developer.cdn.mozilla.net/static/img/favicon72.8ff9d87c82a0.png"&gt;
+&lt;!-- non-Retina iPhone, iPod Touch, and Android 2.1+ devices: --&gt;
+&lt;link rel="apple-touch-icon-precomposed" href="https://developer.cdn.mozilla.net/static/img/favicon57.a2490b9a2d76.png"&gt;
+&lt;!-- basic favicon --&gt;
+&lt;link rel="shortcut icon" href="https://developer.cdn.mozilla.net/static/img/favicon32.e02854fdcf73.png"&gt;</pre>
+
+<p>这些注释解释了每个图标的用途 - 这些元素涵盖的东西提供一个高分辨率图标,这些高分辨率图标当网站保存到iPad的主屏幕时使用。</p>
+
+<p>不用担心现在实现所有这些类型的图标 - 这是一个相当先进的功能,你将不会被要求在这个课堂上学习这个知识点。 这里的主要目的是让你提前了解有这一样东西以防当你浏览其他网站的源代码时不理解源代码的含义。</p>
+
+<ul>
+</ul>
+
+<div class="note">
+<p><strong>注</strong>:如果你的网站使用了内容安全策略(Content Security Policy, CSP)来增加安全性,这个策略会应用在图标上。如果你遇到了图标没有被加载的问题,你需要确认认 {{HTTPHeader("Content-Security-Policy")}} header的 <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src"><code>img-src</code> directive</a> 没有禁止访问图标。</p>
+</div>
+
+<h2 id="在HTML中应用CSS和JavaScript">在HTML中应用CSS和JavaScript</h2>
+
+<p>如今,几乎你使用的所有网站都会使用 {{glossary("CSS")}} 让网页更加炫酷,使用{{glossary("JavaScript")}}让网页有交互功能,比如视频播放器,地图,游戏以及更多功能。这些应用在网页中很常见,它们分别使用 {{htmlelement("link")}}元素以及 {{htmlelement("script")}} 元素。</p>
+
+<ul>
+ <li>
+ <p> {{htmlelement("link")}} 元素经常位于文档的头部。这个link元素有2个属性,rel="stylesheet"表明这是文档的样式表,而 href包含了样式表文件的路径:</p>
+
+ <pre class="brush: html notranslate">&lt;link rel="stylesheet" href="my-css-file.css"&gt;</pre>
+ </li>
+ <li>
+ <p>{{htmlelement("script")}} 部分没必要非要放在文档头部;实际上,把它放在文档的尾部(在 <code>&lt;/body&gt;标签之前</code>)是一个更好的选择,这样可以确保在加载脚本之前浏览器已经解析了HTML内容(如果脚本加载某个不存在的元素,浏览器会报错)。</p>
+
+ <pre class="brush: html notranslate">&lt;script src="my-js-file.js"&gt;&lt;/script&gt;</pre>
+
+ <p><strong>注意:</strong> <code>&lt;script&gt;</code>元素看起来像一个空元素,但它并不是,因此需要一个结束标记。您还可以选择将脚本放入<code>&lt;script&gt;</code>元素中,而不是指向外部脚本文件。</p>
+ </li>
+</ul>
+
+<h3 id="实践操作_在网页中应用CSS和JavaScript">实践操作: 在网页中应用CSS和JavaScript</h3>
+
+<ol>
+ <li>开始操作之前,先拷贝我们的 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/meta-example.html">meta-example.html</a>, <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/script.js">script.js</a> 和 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/style.css">style.css</a> 文件,并把它们保存到本地电脑的同一目录下,确保使用了正确的文件名和文件格式。</li>
+ <li>使用浏览器和文字编辑器同时打开你的HTML文件。</li>
+ <li>根据上面的信息,添加 {{htmlelement("link")}}和 {{htmlelement("script")}}部分到您的HTML文件中, 这样你的HTML就可以应用CSS和JavaScript了。</li>
+</ol>
+
+<p>如果按照上述步骤正确地执行, 当你保存HTML文件并重新刷新浏览器的话,你会发现页面已经变样了:</p>
+
+<p><img alt="包含 JS/CSS的网页示例。CSS将页面背景设置为绿色,由JS向页面添加一个动态列表。" src="https://mdn.mozillademos.org/files/17392/JS_CSS_%E7%A4%BA%E4%BE%8B.png" style="display: block; height: 471px; margin: 0px auto; width: 650px;"></p>
+
+<ul>
+ <li>JavaScript在页面中添加了一个空列表。现在当你点击列表中的任何地方,浏览器会弹出一个对话框要求你为新列表项输入一些文本内容。当你点击OK按钮,刚刚那个新的列表项会添加到页面上,当你点击那些已有的列表项,会弹出一个对话框允许你修改列表项的文本。</li>
+ <li>CSS使页面背景变成了绿色,文本变得大了一点。它还将JavaScript添加到页面中的一些内容进行了样式化,(带有黑色边框的红色条是CSS添加到js生成的列表中的样式。)</li>
+</ul>
+
+<div class="note">
+<p><strong>注意</strong>:如果你卡在这个练习当中,无法正常应用CSS和JavaScript,试着查看一下我们的  <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/css-and-js.html">css-and-js.html</a> 页面实例。</p>
+</div>
+
+<h2 id="为文档设定主语言">为文档设定主语言</h2>
+
+<p>最后,值得一提的是可以(而且有必要)为站点设定语言, 这个可以通过添加<code>lang</code>属性到HTML开始标签中来实现 (参考 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/the-html-head/meta-example.html">meta-example.html</a>),如下所示:</p>
+
+<pre class="brush: html notranslate">&lt;html lang="zh-CN"&gt;</pre>
+
+<p>这在很多方面都很有用。如果你的HTML文档的语言设置好了,那么你的HTML文档就会被搜索引擎更有效地索引 (例如,允许它在特定于语言的结果中正确显示),对于那些使用屏幕阅读器的视障人士也很有用(比如, 法语和英语中都有“six”这个单词,但是发音却完全不同)。</p>
+
+<p>你还可以将文档的分段设置为不同的语言。例如,我们可以把日语部分设置为日语,如下所示:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;日语实例: &lt;span lang="jp"&gt;ご飯が熱い。&lt;/span&gt;.&lt;/p&gt;</pre>
+
+<p>这些codes是根据 <a href="https://en.wikipedia.org/wiki/ISO_639-1">ISO 639-1</a> 标准定义的。你可以在<a href="https://www.w3.org/International/articles/language-tags/">Language tags in HTML and XML</a>找到更多相关的。</p>
+
+<h2 id="总结">总结</h2>
+
+<p>已经到了我们快速学习HTML head的尾声 — 你还能学到更多的相关的,但是现阶段详尽的讲的太多会无聊且迷惑, 我们只希望你现在在这学到最基本的概念! 下一篇我们将要学习 HTML 文本基础。</p>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Getting_started", "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>
diff --git a/files/zh-cn/learn/html/introduction_to_html/文件和网站结构/index.html b/files/zh-cn/learn/html/introduction_to_html/文件和网站结构/index.html
new file mode 100644
index 0000000000..63c421487b
--- /dev/null
+++ b/files/zh-cn/learn/html/introduction_to_html/文件和网站结构/index.html
@@ -0,0 +1,252 @@
+---
+title: 文档与网站架构
+slug: learn/HTML/Introduction_to_HTML/文件和网站结构
+tags:
+ - HTML
+ - 块
+ - 教程
+ - 新手
+ - 样式
+ - 站点
+ - 脚本编写
+ - 页面
+translation_of: Learn/HTML/Introduction_to_HTML/Document_and_website_structure
+---
+<div>{{LearnSidebar}}</div>
+
+<div>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Advanced_text_formatting", "Learn/HTML/Introduction_to_HTML/Debugging_HTML", "Learn/HTML/Introduction_to_HTML")}}</div>
+
+<p class="summary">{{glossary("HTML")}} 不仅能够定义网页的单独部分(例如“段落”或“图片”),还可以使用块级元素(例如“标题栏”、“导航菜单”、“主内容列”)来定义网站中的复合区域。本文将探讨如何规划基本的网站结构,并根据规划的结构来编写 HTML。</p>
+
+<table class="learn-box standard-table">
+ <tbody>
+ <tr>
+ <th scope="row">预备知识:</th>
+ <td>阅读 <a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a>、<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a> 、<a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a>,掌握相关基础知识。</td>
+ </tr>
+ <tr>
+ <th scope="row">学习目标:</th>
+ <td>会用语义标签来构建文档,会搭建简单的网站结构。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="文档的基本组成部分">文档的基本组成部分</h2>
+
+<p>网页的外观多种多样,但是除了全屏视频或游戏,或艺术作品页面,或只是结构不当的页面以外,都倾向于使用类似的标准组件:</p>
+
+<dl>
+ <dt>页眉</dt>
+ <dd>通常横跨于整个页面顶部有一个大标题 和/或 一个标志。 这是网站的主要一般信息,通常存在于所有网页。</dd>
+ <dt>导航栏</dt>
+ <dd>指向网站各个主要区段的超链接。通常用菜单按钮、链接或标签页表示。类似于标题栏,导航栏通常应在所有网页之间保持一致,否则会让用户感到疑惑,甚至无所适从。许多 web 设计人员认为导航栏是标题栏的一部分,而不是独立的组件,但这并非绝对;还有人认为,两者独立可以提供更好的 <a href="/zh-CN/docs/learn/Accessibility">无障碍访问特性</a>,因为屏幕阅读器可以更清晰地分辨二者。</dd>
+ <dt>主内容</dt>
+ <dd>中心的大部分区域是当前网页大多数的独有内容,例如视频、文章、地图、新闻等。这些内容是网站的一部分,且会因页面而异。</dd>
+ <dt>侧边栏</dt>
+ <dd>一些外围信息、链接、引用、广告等。通常与主内容相关(例如一个新闻页面上,侧边栏可能包含作者信息或相关文章链接),还可能存在其他的重复元素,如辅助导航系统。</dd>
+ <dt>页脚</dt>
+ <dd>横跨页面底部的狭长区域。和标题一样,页脚是放置公共信息(比如版权声明或联系方式)的,一般使用较小字体,且通常为次要内容。 还可以通过提供快速访问链接来进行 {{Glossary("SEO")}}。</dd>
+</dl>
+
+<p>一个“典型的网站”可能会这样布局:</p>
+
+<p><img alt="一个简单站点首页截图" src="https://mdn.mozillademos.org/files/16497/snapshot.png" style="display: block; margin: 0px auto;"></p>
+
+<h2 id="用于构建内容的_HTML">用于构建内容的 HTML</h2>
+
+<p>以上简单示例不是很精美,但是足够说明网站的典型布局方式了。 一些站点拥有更多列,其中一些远比这复杂,但一切在你掌握之中。通过合适的CSS, 你可以使用相当多种的任意页面元素来环绕在不同的页面区域来做成你想要的样子,但如前所述,我们要敬畏语义,做到<strong>正确选用元素</strong>。</p>
+
+<p>这是因为视觉效果并不是一切。 我们可以修改最重要内容(例如导航菜单和相关链接)的颜色、字体大小来吸引用户的注意,但是这对视障人士是无效的,“粉红色”和“大字体”对他们并不奏效。</p>
+
+<div class="note">
+<p><strong>注:</strong><a href="http://www.color-blindness.com/2006/04/28/colorblind-population/">全球色盲患者比例为 4%</a>,换句话说,每 12 名男性就有一位色盲,每 200 名女性就有一位色盲。全盲和视障人士约占世界人口(<a href="https://en.wikipedia.org/wiki/World_human_population#/media/File:World_population_history.svg">约 70 亿</a>)的 13%(2015年 <a href="https://en.wikipedia.org/wiki/Visual_impairment">全球约有 9.4 亿人口存在视力问题</a>)。</p>
+</div>
+
+<p>HTML 代码中可根据功能来为区段添加标记。可使用元素来无歧义地表示上文所讲的内容区段,屏幕阅读器等辅助技术可以识别这些元素,并帮助执行“找到主导航 “或”找到主内容“等任务。参见前文所讲的 <a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#为什么我们需要结构化">页面中元素结构和语义不佳所带来的后果</a>。</p>
+
+<p>为了实现语义化标记,HTML 提供了明确这些区段的专用标签,例如:</p>
+
+<ul>
+ <li>{{htmlelement("header")}}:页眉。</li>
+ <li>{{htmlelement("nav")}}:导航栏。</li>
+ <li>{{htmlelement("main")}}:主内容。主内容中还可以有各种子内容区段,可用{{HTMLElement("article")}}、{{htmlelement("section")}} 和 {{htmlelement("div")}} 等元素表示。</li>
+ <li>{{htmlelement("aside")}}:侧边栏,经常嵌套在 {{htmlelement("main")}} 中。</li>
+ <li>{{htmlelement("footer")}}:页脚。</li>
+</ul>
+
+<h3 id="主动学习:研究示例代码">主动学习:研究示例代码</h3>
+
+<p>上图的示例可用下面的代码表示(完整代码请参见 <a href="https://github.com/roy-tian/learning-area/blob/master/html/introduction-to-html/document-and-website-structure/index.html">GitHub</a>),请结合图片观察代码,并找出代码中可见的区段:</p>
+
+<pre class="brush: html notranslate">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;title&gt;二次元俱乐部&lt;/title&gt;
+ &lt;link href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300|Sonsie+One" rel="stylesheet"&gt;
+ &lt;link href="https://fonts.googleapis.com/css?family=ZCOOL+KuaiLe" rel="stylesheet"&gt;
+ &lt;link href="style.css" rel="stylesheet"&gt;
+ &lt;/head&gt;
+
+ &lt;body&gt;
+ &lt;header&gt; &lt;!-- 本站所有网页的统一主标题 --&gt;
+ &lt;h1&gt;聆听电子天籁之音&lt;/h1&gt;
+ &lt;/header&gt;
+
+ &lt;nav&gt; &lt;!-- 本站统一的导航栏 --&gt;
+ &lt;ul&gt;
+ &lt;li&gt;&lt;a href="#"&gt;主页&lt;/a&gt;&lt;/li&gt;
+ &lt;!-- 共n个导航栏项目,省略…… --&gt;
+ &lt;/ul&gt;
+
+ &lt;form&gt; &lt;!-- 搜索栏是站点内导航的一个非线性的方式。 --&gt;
+ &lt;input type="search" name="q" placeholder="要搜索的内容"&gt;
+ &lt;input type="submit" value="搜索"&gt;
+ &lt;/form&gt;
+ &lt;/nav&gt;
+
+ &lt;main&gt; &lt;!-- 网页主体内容 --&gt;
+ &lt;article&gt;
+ &lt;!-- 此处包含一个 article(一篇文章),内容略…… --&gt;
+ &lt;/article&gt;
+
+ &lt;aside&gt; &lt;!-- 侧边栏在主内容右侧 --&gt;
+ &lt;h2&gt;相关链接&lt;/h2&gt;
+ &lt;ul&gt;
+ &lt;li&gt;&lt;a href="#"&gt;这是一个超链接&lt;/a&gt;&lt;/li&gt;
+ &lt;!-- 侧边栏有n个超链接,略略略…… --&gt;
+ &lt;/ul&gt;
+ &lt;/aside&gt;
+ &lt;/main&gt;
+
+ &lt;footer&gt; &lt;!-- 本站所有网页的统一页脚 --&gt;
+ &lt;p&gt;© 2050 某某保留所有权利&lt;/p&gt;
+ &lt;/footer&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>请花一些时间来阅读,其中的注释应该能够帮助你理解这些代码。现在能够理解上面的代码就可以,因为编写一套正确的 HTML 结构是理解文档布局的前提,布局工作就交给 CSS 吧。在学习 CSS 一章时我们再展开介绍。</p>
+
+<h2 id="HTML_布局元素细节">HTML 布局元素细节</h2>
+
+<p>理解所有 HTML 区段元素具体含义是很有益处的,这一点将随着个人 web 开发经验的逐渐丰富日趋显现。更多细节请查阅 <a href="/zh-CN/docs/Web/HTML/Element">HTML 元素参考</a>。现在,你只需要理解以下主要元素的意义:</p>
+
+<ul>
+ <li>{{HTMLElement('main')}} 存放每个页面独有的内容。每个页面上只能用一次 <code>&lt;main&gt;</code>,且直接位于 {{HTMLElement('body')}} 中。最好不要把它嵌套进其它元素。</li>
+ <li>{{HTMLElement('article')}} 包围的内容即一篇文章,与页面其它部分无关(比如一篇博文)。</li>
+ <li>{{HTMLElement('section')}} 与 <code>&lt;article&gt;</code> 类似,但 <code>&lt;section&gt;</code> 更适用于组织页面使其按功能(比如迷你地图、一组文章标题和摘要)分块。一般的最佳用法是:以 <a href="https://developer.mozilla.org/en-US/Learn/HTML/Howto/Set_up_a_proper_title_hierarchy">标题</a> 作为开头;也可以把一篇 <code>&lt;article&gt;</code> 分成若干部分并分别置于不同的 <code>&lt;section&gt;</code> 中,也可以把一个区段 <code>&lt;section&gt;</code> 分成若干部分并分别置于不同的 <code>&lt;article&gt;</code> 中,取决于上下文。</li>
+ <li>{{HTMLElement('aside')}} 包含一些间接信息(术语条目、作者简介、相关链接,等等)。</li>
+ <li>{{HTMLElement('header')}} 是简介形式的内容。如果它是 {{HTMLElement('body')}} 的子元素,那么就是网站的全局页眉。如果它是 {{HTMLElement('article')}} 或{{HTMLElement('section')}} 的子元素,那么它是这些部分特有的页眉(此 <code>&lt;header&gt;</code> 非彼 <a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#增加一个标题">标题</a>)。</li>
+ <li>{{HTMLElement('nav')}} 包含页面主导航功能。其中不应包含二级链接等内容。</li>
+ <li>{{HTMLElement('footer')}} 包含了页面的页脚部分。</li>
+</ul>
+
+<h3 id="无语义元素">无语义元素</h3>
+
+<p>有时你会发现,对于一些要组织的项目或要包装的内容,现有的语义元素均不能很好对应。有时候你可能只想将一组元素作为一个单独的实体来修饰来响应单一的用 {{glossary("CSS")}} 或 {{glossary("JavaScript")}}。为了应对这种情况,HTML提供了 {{HTMLElement("div")}} 和 {{HTMLElement("span")}} 元素。应配合使用 {{htmlattrxref('class')}} 属性提供一些标签,使这些元素能易于查询。</p>
+
+<p>{{HTMLElement("span")}} 是一个内联的(inline)无语义元素,最好只用于无法找到更好的语义元素来包含内容时,或者不想增加特定的含义时。例如:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;国王喝得酩酊大醉,在凌晨 1 点时才回到自己的房间,踉跄地走过门口。&lt;span class="editor-note"&gt;[编辑批注:此刻舞台灯光应变暗]&lt;/span&gt;.&lt;/p&gt;</pre>
+
+<p>这里,“编辑批注”仅仅是对舞台剧导演提供额外指引;没有具体语义。对于视力正常的用户,CSS 应将批注内容与主内容稍微隔开一些。</p>
+
+<p>{{HTMLElement("div")}} 是一个块级无语义元素,应仅用于找不到更好的块级元素时,或者不想增加特定的意义时。例如,一个电子商务网站页面上有一个一直显示的购物车组件。</p>
+
+<pre class="brush: html notranslate">&lt;div class="shopping-cart"&gt;
+ &lt;h2&gt;购物车&lt;/h2&gt;
+ &lt;ul&gt;
+ &lt;li&gt;
+ &lt;p&gt;&lt;a href=""&gt;&lt;strong&gt;银耳环&lt;/strong&gt;&lt;/a&gt;:$99.95.&lt;/p&gt;
+ &lt;img src="../products/3333-0985/" alt="Silver earrings"&gt;
+ &lt;/li&gt;
+ &lt;li&gt;
+ ...
+ &lt;/li&gt;
+ &lt;/ul&gt;
+ &lt;p&gt;售价:$237.89&lt;/p&gt;
+&lt;/div&gt;</pre>
+
+<p>这里不应使用 <code>&lt;aside&gt;</code>,因为它和主内容并没有必要的联系(你想在任何地方都能看到它)。甚至不能用 <code>&lt;section&gt;</code> ,因为它也不是页面上主内容的一部分。所以在这种情况下就应使用 <code>&lt;div&gt;</code>,为满足无障碍使用特征,还应为购物车的标题设置一个可读标签。</p>
+
+<div class="warning">
+<p><strong>警告:</strong><code>&lt;div&gt;</code> 非常便利但容易被滥用。由于它们没有语义值,会使 HTML 代码变得混乱。要小心使用,只有在没有更好的语义方案时才选择它,而且要尽可能少用, 否则文档的升级和维护工作会非常困难。</p>
+</div>
+
+<h3 id="换行与水平分割线">换行与水平分割线</h3>
+
+<p>有时会用到 {{htmlelement("br")}} 和 {{htmlelement("hr")}} 两个元素,需要介绍一下。</p>
+
+<p><code>&lt;br&gt;</code> 可在段落中进行换行;<code>&lt;br&gt;</code> 是唯一能够生成多个短行结构(例如邮寄地址或诗歌)的元素。比如:</p>
+
+<pre class="brush: html notranslate">&lt;p&gt;从前有个人叫小高&lt;br&gt;
+他说写 HTML 感觉最好&lt;br&gt;
+但他写的代码结构语义一团糟&lt;br&gt;
+他写的标签谁也懂不了。&lt;/p&gt;
+</pre>
+
+<p>没有 <code>&lt;br&gt;</code> 元素,这段会直接显示在长长的一行中(如前文所讲,<a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started#HTML中的空白">HTML会忽略大部分空格</a>);使用 <code>&lt;br&gt;</code> 元素,才使得诗看上去像诗:</p>
+
+<p>从前有个人叫小高<br>
+ 他说写 HTML 感觉最好<br>
+ 但他写的代码结构语义一团糟<br>
+ 他写的标签谁也懂不了。</p>
+
+<p><code>&lt;hr&gt;</code> 元素在文档中生成一条水平分割线,表示文本中主题的变化(例如话题或场景的改变)。一般就是一条水平的直线。例如:</p>
+
+<pre class="notranslate">&lt;p&gt;原来这唐僧是个慈悯的圣僧。他见行者哀告,却也回心转意道:“既如此说,且饶你这一次。再休无礼。如若仍前作恶,这咒语颠倒就念二十遍!”行者道:“三十遍也由你,只是我不打人了。”却才伏侍唐僧上马,又将摘来桃子奉上。唐僧在马上也吃了几个,权且充饥。&lt;/p&gt;
+&lt;hr&gt;
+&lt;p&gt;却说那妖精,脱命升空。原来行者那一棒不曾打杀妖精,妖精出神去了。他在那云端里,咬牙切齿,暗恨行者道:“几年只闻得讲他手段,今日果然话不虚传。那唐僧已此不认得我,将要吃饭。若低头闻一闻儿,我就一把捞住,却不是我的人了。不期被他走来,弄破我这勾当,又几乎被他打了一棒。若饶了这个和尚,诚然是劳而无功也。我还下去戏他一戏。”&lt;/p&gt;</pre>
+
+<p>将渲染成:</p>
+
+<p>原来这唐僧是个慈悯的圣僧。他见行者哀告,却也回心转意道:“既如此说,且饶你这一次。再休无礼。如若仍前作恶,这咒语颠倒就念二十遍!”行者道:“三十遍也由你,只是我不打人了。”却才伏侍唐僧上马,又将摘来桃子奉上。唐僧在马上也吃了几个,权且充饥。</p>
+
+<hr>
+<p>却说那妖精,脱命升空。原来行者那一棒不曾打杀妖精,妖精出神去了。他在那云端里,咬牙切齿,暗恨行者道:“几年只闻得讲他手段,今日果然话不虚传。那唐僧已此不认得我,将要吃饭。若低头闻一闻儿,我就一把捞住,却不是我的人了。不期被他走来,弄破我这勾当,又几乎被他打了一棒。若饶了这个和尚,诚然是劳而无功也。我还下去戏他一戏。”</p>
+
+<h2 id="规划一个简单的网站">规划一个简单的网站</h2>
+
+<p>在完成页面内容的规划后,一般应按部就班地规划整个网站的内容,要可能带给用户最好的体验,需要哪些页面、如何排列组合这些页面、如何互相链接等问题不可忽略。这些工作称为{{glossary("Information architecture", "信息架构")}}。在大型网站中,大多数规划工作都可以归结于此,而对于一个只有几个页面的简单网站,规划设计过程可以更简单,更有趣!</p>
+
+<ol>
+ <li>时刻记住,大多数(不是全部)页面会使用一些相同的元素,例如导航菜单以及页脚内容。若网站为商业站点,不妨在所有页面的页脚都加上联系方式。请记录这些对所有页面都通用的内容:<img alt="所有页面共有的内容,包括:站点标题、Logo、联系方式、版权声明、语言等信息。" src="https://mdn.mozillademos.org/files/16508/%E9%80%9A%E7%94%A8%E5%86%85%E5%AE%B9.gif" style="display: block; margin: 0px auto;"></li>
+ <li>接下来,可为页面结构绘制草图(这里与前文那个站点页面的截图类似)。记录每一块的作用:<img alt="简单的页面布局示意图,有页眉、页脚、主内容、侧边栏。" src="https://mdn.mozillademos.org/files/16509/%E9%A1%B5%E9%9D%A2%E5%B8%83%E5%B1%80.gif" style="display: block; margin: 0px auto;"></li>
+ <li>下面,对于期望添加进站点的所有其它(通用内容以外的)内容展开头脑风暴,直接罗列出来。<img alt="把假日旅行站点的所有功能罗列到一个列表中" src="https://mdn.mozillademos.org/files/16522/%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8.gif" style="display: block; margin: 0px auto;"></li>
+ <li>下一步,试着对这些内容进行分组,这样可以让你了解哪些内容可以放在同一个页面。这种做法和 {{glossary("Card sorting", "卡片分类法")}} 非常相似。<img alt="假日网站的页面应分5类:搜索、特别提供、具体国家信息、搜索结果、购物。" src="https://mdn.mozillademos.org/files/16521/%E5%8A%9F%E8%83%BD%E5%88%86%E7%B1%BB.gif" style="display: block; margin: 0px auto;"></li>
+ <li>接下来,试着绘制一个站点地图的草图,使用一个气泡代表网站的一个页面,并绘制连线来表示页面间的一般工作流。主页面一般置于中心,且链接到其他大多数页面;小型网站的大多数页面都可以从主页的导航栏中链接跳转。也可记录下内容的显示方式。<img alt="" src="https://mdn.mozillademos.org/files/16523/%E7%AB%99%E7%82%B9%E5%9C%B0%E5%9B%BE.gif" style="display: block; margin: 0px auto;"></li>
+</ol>
+
+<h3 id="主动学习:创建站点地图">主动学习:创建站点地图</h3>
+
+<p>自己创造一个网站(什么网站呢?)并尝试执行上述步骤。</p>
+
+<div class="note">
+<p><strong>注:</strong>记得保存你的杰作,今后可能会用到哦。</p>
+</div>
+
+<h2 id="小结">小结</h2>
+
+<p>现在你应该对如何构建网页/站点有了更好的理解。下一节我们将学习如何调试 HTML。</p>
+
+<h2 id="另请参阅">另请参阅</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines">使用 HTML 区段和大纲</a>:HTML5 语义元素和大纲算法进阶指南。</li>
+</ul>
+
+<p>{{PreviousMenuNext("Learn/HTML/Introduction_to_HTML/Advanced_text_formatting", "Learn/HTML/Introduction_to_HTML/Debugging_HTML", "Learn/HTML/Introduction_to_HTML")}}</p>
+
+<h2 id="本章目录">本章目录</h2>
+
+<ul>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/Getting_started">开始学习 HTML</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML">“头”里有什么?HTML 元信息</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/HTML_text_fundamentals">HTML 文字处理初步</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks">创建超链接</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting">高级文字格式</a></li>
+ <li><a href="/zh-CN/docs/learn/HTML/Introduction_to_HTML/文件和网站结构">文档和站点结构</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML">HTML 调试</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter">课程测验:为信件排版</a></li>
+ <li><a href="/zh-CN/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content">课程测验:构建内容丰富的网页</a></li>
+</ul>