0%

本文按照 Mozilla 贡献者基于 CC-BY-SA 2.5 协议发布的以下文章改编:

一个简单的段落

在安装好VScode,新建好一个HTML文件之后,我们就可以开始了。
HTML里有一个重要的概念——标签(tag)。一对标签可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。
比如说,现在有这样一句话:“AMD YES!”
我们可以用<p>标签(段落标签)把它括起来,变成:

1
<p>AMD YES!</p>

结果就是在屏幕上单行显示一个:

AMD YES!

这一段文字有以下部分:
开始标签——<p>。它被尖括号包围,表示这个标签从这里开始起作用。比如此处就是说,从这里开始是一个段落。
结束标签——</p>。同样也是尖括号包围,与开始标签不同的是有一个斜杠,用于区分。这个斜杠是必不可缺的,不然会出问题。这表示着元素的结尾——在本例中即段落在此结束。
内容——AMD YES。被<p></p>包围的部分就是内容,会被显示出来。显示的情况会根据包围它的标签和CSS中的描述决定。
元素——<p>AMD YES!</p>。没错,这整个语句就是一个元素。开始标签、结束标签与内容相结合,便是一个完整的元素。

元素嵌套

已知有一个元素<strong>,能够表示括起来的内容是重要的。
假如我是AMD的忠实粉丝,要高喊“AMD YES”的YES这个词,该怎么处理<p>元素里面的东西呢?我们可以让元素嵌套。具体来说,就是元素里有一个元素。

1
<p>AMD <strong>YES!</strong></p>

显示结果就是这样:

AMD YES!

这里,<p>元素里嵌套了一个<strong>元素,达到了这样的效果。
必须保证元素嵌套次序正确:本例首先使用 <p> 标签,然后是 <strong> 标签,因此要先结束 <strong> 标签,最后再结束 <p> 标签。
比如,这样就是错误的:

1
<p>AMD <strong>YES!</p></strong>                      BAD!!!

或者说,假如我们假设<p>是( ),<strong>是[ ],这样是可以的:
[ ] ( [ ] ( ) )
但是这样就是不行的:
( [ ) ]
就是说,一对括号内可以插入一整对的括号,但是不能插入括号的左半部分或者右半部分。元素嵌套也是这样。
如果你不好好写,导致了嵌套问题,你可怜的浏览器就要自己猜测这是什么。那么就会变得乱七八糟。

空元素

有这么一些元素,因为里面不用写什么东西(也就是没有内容),所以就没有结束标签。这就是空元素。比如分割线元素<hr>

1
2
3
<p>3.1415926535</p>
<hr>
<p>114514</p>

显示起来就是:

3.1415926535


114514

元素属性

有时候,元素可以有属性
由于GCVillager是伍六七的忠实粉丝,所以这里放一张伍六七的图。

1
2
<img src="https://yjzx-site.github.io/img/club-file/scissor-seven-picture.jpg" 
alt=一张伍六七的图片 width="960px" height=540px>

效果大概是这样:(不过图片大小没改,不要在意)

一张伍六七的图片

我们暂时不深究<img>元素,等会再讲。这里就了解一下元素属性。可以看出,<img>标签有src、alt、width、height等属性,属性的属性值(也就是等号后面跟的东西)可以是字符串,也可以是数字,或者是带单位的数字(960px代表960像素)。不包含空格(以及 “ ‘ ` = < > 字符)的简单属性值可以不使用引号,但是建议将所有属性值用引号括起来,这样的代码一致性更佳,更易于阅读。各个属性之间用空格分隔。

HTML文档

在你新建的HTML中输入英文感叹号,就能看到这样的东西:
自动补全
这时候,你可以通过上下键进行选择,然后按下Tab键补全一段内容。同样,当你输入HTML中的标签,比如<strong>,你只需要输入<str然后按下Tab,就可以补全成<strong。这时候,你再把右尖括号打上,就会自动补全成<strong></strong>,光标处于两个标签的中间,你只需要往里面打字就好了。这个功能可以大大提高我们写HTML和CSS的效率。
刚刚我们打感叹号补全的内容是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

</body>
</html>

由于GCVillager太懒了,这一段全部抄MDN,改了一点点。如果看不懂也没关系。

<!DOCTYPE html> — 文档类型。混沌初分,HTML 尚在襁褓(大约是 1991/92 年)之时,DOCTYPE 用来链接一些 HTML 编写守则,比如自动查错之类。DOCTYPE 在当今作用有限,仅用于保证文档正常读取。现在知道这些就足够了。
<html></html><html> 元素。该元素包含整个页面的内容,也称作根元素。所有内容都必须写在<html></html>标签之间。
<head></head><head> 元素。该元素的内容对用户不可见,其中包含例如面向搜索引擎的搜索关键字(keywords)、页面描述、CSS 样式表和字符编码声明等。
<meta charset="utf-8"> — 该元素指定文档使用 UTF-8 字符编码 ,UTF-8 包括绝大多数人类已知语言的字符。基本上 UTF-8 可以处理任何文本内容,还可以避免以后出现某些问题,没有理由再选用其他编码。
<title></title><title> 元素。该元素设置页面的标题,显示在浏览器标签页上,也作为收藏网页的描述文字。
<body></body><body> 元素。该元素包含期望让用户在访问页面时看到的内容,包括文本、图像、视频、游戏、可播放的音轨或其他内容。

总之就是,<head>元素里的内容,除了<title>显示在标题栏里,没有一个是可以被用户看到的,但是它们各有用途。想要被用户看到的内容需要写在<body>里面。

欲知后事如何,请听下回分解。

在学习HTML之前,我们需要先认识一下什么是HTML。
HTML,即超文本标记语言。顾名思义,HTML是一种标记语言——它不属于编程语言。它本身并不能运行自己(比如说你用C++写了一个程序,双击就能运行,而HTML却不能,那样只会打开浏览器来预览);想要让它“生效”,需要使用浏览器来渲染它。这么看来,似乎和解释型语言(比如Python,需要解释器来实时解释文件并运行)有点像?但是也不对,Python能运行诸如a=b+c之类的语句(也就是说,能运算),还有函数、返回值、分支、循环等一系列编程语言的特性,而HTML统统没有。这是HTML等标记语言和编程语言的根本区别。
那么HTML是干什么的?我们拿Microsoft Office的Word程序对比。Word能改变文本的字体、字号、颜色。位置,让它显示出一种视觉效果;HTML加上我们之后要学习的CSS,也可以达到这样的效果,而且或许能做得更好——只是可能难学习一点吧。所以说,它就是一个写文档的东西。或者说,它也和Markdown差不多,就是用来写文本的。
HTML定义的是网页的内容,而CSS定义的是网页的外观。怎么说呢?
这是你最喜欢的B站。第一张图是加载了HTML和CSS之后,显示出来的正常的样子的顶部栏;第二张图是只加载了HTML的,可以看出排版完全乱了(而且那张2233的图完全不知道哪里去了,我再也没有找到它)。而如果连HTML都没有加载,那网页就是一片空白了。
有CSS的B站
没CSS的B站
如果你的网站需要运行一点东西,比如算一算0.1+0.2是否等于0.30000000000000004,该怎么办?那就用Javascript。Javascript是一种编程语言,所以它有函数、有运算。不仅如此,它还能修改网页的HTML内容。HTML、CSS、Javascript就是我们的前端三件套。
HTML和CSS标准在不断发展。我们接下来将要介绍的是最新的HTML5和CSS3标准。
在开始学习之前,请先下载安装VScode。如果要新建一个HTML文件,点击【文件-新建文件】,在新出现的页面里选择语言为HTML;或者点击【文件-另存为】,保存成为一个HTML文件。如果要查看文件的效果,只需要保存文件,然后拖到浏览器里打开就可以了。或者还有更方便的,就是在VScode中按下F5,在弹出的页面选择一个浏览器,就能在浏览器中打开。
HTML元素很多,不可能一次性记住。如有需要,可以查看我们的速查表(改编自MDN)或者直接在MDN上搜索。

此页面列出了所有使用标签创建的 HTML 元素。它们已被按照功能进行分组,以便您更轻松地找到想要的内容。同时,侧边栏中也按照字母排序列出了所有元素。

若想获知更多关于HTML元素、属性的基本信息,请查阅 HTML 介绍中的相关内容。

主根元素

元素 描述
<html> HTML <html> 元素 表示一个HTML文档的根(顶级元素),所以它也被称为 _根元素_。所有其他元素必须是此元素的后代。

文档元数据

元数据(Metadata)含有页面的相关信息,包括样式、脚本及数据,能帮助一些软件(例如 搜索引擎浏览器 等等)更好地运用和渲染页面。对于样式和脚本的元数据,可以直接在网页里定义,也可以链接到包含相关信息的外部文件。

元素 描述
<base> HTML <base> 元素 指定用于一个文档中包含的所有相对 URL 的根 URL。一份中只能有一个 <base> 元素。
<head> HTML <head> 元素 规定文档相关的配置信息(元数据),包括文档的标题,引用的文档样式和脚本等。
<link> HTML外部资源链接元素 (**<link>**) 规定了当前文档与外部资源的关系。该元素最常用于链接样式表,此外也可以被用来创建站点图标(比如PC端的“favicon”图标和移动设备上用以显示在主屏幕的图标) 。
<meta> HTML <meta> 元素表示那些不能由其它 HTML 元相关(meta-related)元素(baselink, scriptstyletitle)之一表示的任何Metadata信息。
<style> HTML的<style>元素包含文档的样式信息或者文档的部分内容。默认情况下,该标签的样式信息通常是CSS的格式。
<title> HTML <title> 元素 定义文档的标题,显示在Browser的标题栏或标签页上。它只应该包含文本,若是包含有标签,则它包含的任何标签都将被忽略。

分区根元素

元素 描述
<body> HTML body 元素表示文档的内容。document.body 属性提供了可以轻松访问文档的 body 元素的脚本。

内容分区

内容分区元素允许你将文档内容从逻辑上进行组织划分。使用包括页眉(header)、页脚(footer)、导航(nav)和标题(h1~h6)等分区元素,来为页面内容创建明确的大纲,以便区分各个章节的内容。

元素 描述
<address> HTML <address> 元素 表示其中的 HTML 提供了某个人或某个组织(等等)的联系信息。
<article> HTML <article>元素 表示文档、页面、应用或网站中的独立结构,其意在成为可独立分配的或可复用的结构,如在发布中,它可能是论坛帖子、杂志或新闻文章、博客、用户提交的评论、交互式组件,或者其他独立的内容项目。​​
<aside> HTML <aside> 元素表示一个和其余页面内容几乎无关的部分,被认为是独立于该内容的一部分并且可以被单独的拆分出来而不会使整体受影响。
<footer> HTML <footer> 元素表示最近一个章节内容或者根节点(sectioning root )元素的页脚。一个页脚通常包含该章节作者、版权数据或者与文档相关的链接等信息。
<header> HTML <header> 元素用于展示介绍性内容,通常包含一组介绍性的或是辅助导航的实用元素。它可能包含一些标题元素,但也可能包含其他元素,比如 Logo、搜索框、作者名称,等等。
<h1>,<h2>,<h3>,<h4>,<h5>,<h6> HTML <h1><h6> 标题(Heading)元素呈现了六个不同的级别的标题,<h1> 级别最高,而 <h6> 级别最低。
<main> HTML <main> 元素呈现了文档的 body 或应用的主体部分。主体部分由与文档直接相关,或者扩展于文档的中心主题、应用的主要功能部分的内容组成。
<nav> HTML <nav>元素表示页面的一部分,其目的是在当前文档或其他文档中提供导航链接。导航部分的常见示例是菜单,目录和索引。
<section> HTML <section>元素表示一个包含在HTML文档中的独立部分,它没有更具体的语义元素来表示,一般来说会有包含一个标题。

文本内容

使用 HTML 文本内容元素来组织在开标签 <body> 和闭标签 </body> 里的块或章节的内容。这些元素能标识内容的宗旨或结构,而这对于 accessibilitySEO 很重要。

元素 描述
<blockquote> HTML <blockquote> 元素(或者 HTML 块级引用元素),代表其中的文字是引用内容。通常在渲染时,这部分的内容会有一定的缩进( 中说明了如何更改)。若引文来源于网络,则可以将原内容的出处 URL 地址设置到 cite 特性上,若要以文本的形式告知读者引文的出处时,可以通过 cite 元素。
<dd> HTML <dd> 元素(HTML 描述元素)用来指明一个描述列表  (dl) 元素中一个术语的描述。这个元素只能作为描述列表元素的子元素出现,并且必须跟着一个 dt 元素。
<div> HTML <div> 元素 (或 HTML 文档分区元素) 是一个通用型的流内容容器,在不使用CSS的情况下,其对内容或布局没有任何影响。
<dl> HTML <dl> 元素 (或 HTML 描述列表元素)是一个包含术语定义以及描述的列表,通常用于展示词汇表或者元数据 (键-值对列表)。
<dt> HTML <dt> 元素 (或 HTML 术语定义元素)用于在一个定义列表中声明一个术语。该元素仅能作为 dl 的子元素出现。通常在该元素后面会跟着 dd 元素, 然而,多个连续出现的 <dt> 元素都将由出现在它们后面的第一个 dd 元素定义。
<figcaption> HTML <figcaption> 元素 是与其相关联的图片的说明/标题,用?于描述其父节点 figure 元素里的其他数据。这意味着 <figcaption> 在figure 块里是第一个或最后一个。同时 HTML Figcaption 元素是可选的;如果没有该元素,这个父节点的图片只是会没有说明/标题。
<figure> HTML <figure> 元素代表一段独立的内容, 经常与说明(caption) figcaption 配合使用, 并且作为一个独立的引用单元。当它属于主内容流(main flow)时,它的位置独立于主体。这个标签经常是在主文中引用的图片,插图,表格,代码段等等,当这部分转移到附录中或者其他页面时不会影响到主体。
<hr> HTML <hr> 元素表示段落级元素之间的主题转换(例如,一个故事中的场景的改变,或一个章节的主题的改变)。
<li> HTML <li> 元素 (或称 HTML 列表条目元素) 用于表示列表里的条目。它必须包含在一个父元素里:一个有序列表(ol),一个无序列表(ul),或者一个菜单 (menu)。在菜单或者无序列表里,列表条目通常用点排列显示;在有序列表里,列表条目通常在左边显示按升序排列的计数,例如数字或者字母。
<ol> HTML <ol> 元素表示有序列表,通常渲染为一个带编号的列表。
<p> HTML <p>元素 (或者说 HTML 段落元素)表示文本的一个段落。该元素通常表现为一整块与相邻文本分离的文本,或以垂直的空白隔离或以首行缩进。另外,<p> 是块级元素
<pre> HTML <pre>元素 表示预定义格式文本。在该元素中的文本通常按照原文件中的编排,以等宽字体的形式展现出来,文本中的空白符(比如空格和换行符)都会显示出来。(紧跟在 <pre> 开始标签后的换行符也会被省略)
<ul> HTML <ul> 元素(或称 HTML 无序列表元素)表示一个内可含多个元素的无序列表或项目符号列表。

内联文本语义

使用 HTML 内联文本语义(Inline text semantics)定义一个单词、一行内容,或任意文字的语义、结构或样式。

元素 描述
<a> HTML <a> 元素(或称锚元素)可以通过它的 href 属性创建通向其他网页、文件、同一页面内的位置、电子邮件地址或任何其他 URL 的超链接。
<abbr> HTML 缩写元素(**<abbr>**)用于代表缩写,并且可以通过可选的 title 属性提供完整的描述。
<b> HTML提醒注意(Bring Attention To)元素(<b>用于吸引读者的注意到该元素的内容上(如果没有另加特别强调)。这个元素过去被认为是粗体(Boldface)元素,并且大多数浏览器仍然将文字显示为粗体。尽管如此,你不应将 <b> 元素用于显示粗体文字;替代方案是使用 CSS font-weight 属性来创建粗体文字。
<bdi> HTML 双向隔离元素 (<bdi> ) 告诉浏览器的双向算法将其包含的文本与周围的文本隔离,当网站动态插入一些文本且不知道所插入文本的方向性时,此功能特别有用。
<bdo> HTML 双向文本替代元素 (<bdo>)改写了文本的方向性,
<br> HTML <br> 元素在文本中生成一个换行(回车)符号。此元素在写诗和地址时很有用,这些地方的换行都非常重要。
<cite> HTML引用( Citation)标签 (<cite>) 表示一个作品的引用,且必须包含作品的标题。这个引用可能是一个根据适当的上下文约定关联引用的元数据的缩写。
<code> HTML <code> 元素呈现一段计算机代码. 默认情况下, 它以浏览器的默认等宽字体显示.
<data> HTML <data> 元素将一个指定内容和机器可读的翻译联系在一起。但是,如果内容是与时间或者日期相关的,则一定要使用 time
<dfn> HTML 定义元素 (<dfn>) 表示术语的一个定义。
<em> HTML 着重元素 (<em>) 标记出需要用户着重阅读的内容, <em> 元素是可以嵌套的,嵌套层次越深,则其包含的内容被认定为越需要着重阅读。
<i> HTML元素 <i> 用于表现因某些原因需要区分普通文本的一系列文本。例如技术术语、外文短语或是小说中人物的思想活动等,它的内容通常以斜体显示。
<kbd> HTML键盘输入元素 (<kbd>) 用于表示用户输入,它将产生一个行内元素,以浏览器的默认monospace字体显示。
<mark> HTML标记文本元素 (<mark>)表示为引用或符号目的而标记或突出显示的文本,这是由于标记的段落在封闭上下文中的相关性或重要性造成的。
<q> HTML引用标签 (<q>)表示一个封闭的并且是短的行内引用的文本. 这个标签是用来引用短的文本,所以请不要引入换行符; 对于长的文本的引用请使用 blockquote 替代.
<rp> HTML <rp> 元素用于为那些不能使用 ruby 元素展示 ruby 注解的浏览器,提供随后的圆括号。
<rt> HTML Ruby 文本 (<rt>) 元素包含字符的发音,字符在 ruby 注解中出现,它用于描述东亚字符的发音。这个元素始终在 ruby 元素中使用。
<ruby> HTML <ruby> 元素 被用来展示东亚文字注音或字符注释。
<s> HTML <s> 元素 使用删除线来渲染文本。使用 <s> 元素来表示不再相关,或者不再准确的事情。但是当表示文档编辑时,不提倡使用 <s> ;为此,提倡使用 del 和 ins 元素。
<samp> HTML <samp> 元素 元素用于标识计算机程序输出,通常使用浏览器缺省的 monotype 字体(例如 Lucida Console)。
<small> HTML <small> 元素将使文本的字体变小一号。(例如从大变成中等,从中等变成小,从小变成超小)。在HTML5中,除了它的样式含义,这个元素被重新定义为表示边注释和附属细则,包括版权和法律文本。
<span> HTML <span> 元素是短语内容的通用行内容器,并没有任何特殊语义。可以使用它来编组元素以达到某种样式意图(通过使用类或者Id属性),或者这些元素有着共同的属性,比如lang。应该在没有其他合适的语义元素时才使用它。<span> 与 div 元素很相似,但 div 是一个 块元素<span> 则是 行内元素 .
<strong> HTML <strong> 元素 (<strong>)表示文本十分重要,一般用粗体显示。
<sub> HTML <sub> 元素定义了一个文本区域,出于排版的原因,与主要的文本相比,应该展示得更低并且更小。
<sup> HTML <sup> 元素定义了一个文本区域,出于排版的原因,与主要的文本相比,应该展示得更高并且更小。
<time> HTML <time 标签> (<time>) 用来表示24小时制时间或者公历日期,若表示日期则也可包含时间和时区。
<u> HTML <u> 元素(表意不清标注元素) 表示一个需要标注为非文本化(non-textual)的内联文本域。默认情况下渲染为一个实线下划线,可以用CSS替换。
<var> HTML <var> 标签表示变量的名称,或者由用户提供的值。
<wbr> HTML <wbr> 元素 — 一个文本中的位置,其中浏览器可以选择来换行,虽然它的换行规则可能不会在这里换行。

图片和多媒体

HTML 支持各种多媒体资源,例如图像、音频和视频。

元素 描述
<area> HTML <area> 元素 在图片上定义一个热点区域,可以关联一个超链接。<area>元素仅在<map>元素内部使用。
<audio> HTML <audio> 元素用于在文档中嵌入音频内容。 <audio> 元素可以包含一个或多个音频资源, 这些音频资源可以使用 src 属性或者source 元素来进行描述:浏览器将会选择最合适的一个来使用。也可以使用 MediaStream 将这个元素用于流式媒体。
<img> HTML <img> 元素将一份图像嵌入文档。
<map> HTML <map> 属性area 属性一起使用来定义一个图像映射(一个可点击的链接区域).
<track> HTML <track> 元素 被当作媒体元素—audiovideo的子元素来使用。它允许指定时序文本字幕(或者基于时间的数据),例如自动处理字幕。字幕格式有 WebVTT 格式.vtt格式文件)— Web 视频文本字幕格式,以及指时序文本标记语言(TTML)格式。
<video> HTML <video> 元素 用于在HTML或者XHTML文档中嵌入媒体播放器,用于支持文档内的视频播放。

内嵌内容

除了常规的多媒体内容,HTML 可以包括各种其他的内容,即使它并不容易交互。

元素 描述
<embed> HTML <embed> 元素将外部内容嵌入文档中的指定位置。此内容由外部应用程序或其他交互式内容源(如浏览器插件)提供。
<iframe> HTML <iframe> 元素定义内联框架,将其他页面嵌入当前页面中。
<object> HTML <object> 元素(或者称作 HTML 嵌入对象元素)表示引入一个外部资源,这个资源可能是一张图片,一个嵌入的浏览上下文,亦或是一个插件所使用的资源。
<param> HTML <param>元素object元素定义参数
<picture> HTML <picture> 元素通过包含零或多个 source 元素和一个 img 元素来为不同的显示/设备场景提供图像版本。浏览器会选择最匹配的子 <source> 元素,如果没有匹配的,就选择 <img> 元素的 src 属性中的URL。然后,所选图像呈现在<img>元素占据的空间中。
<portal> HTML<portal>元素将另一个HTML页面嵌入到当前页面中,使两者更平滑地衔接。
<source> HTML <source> 元素为 picture, audio 或者 video 元素指定多个媒体资源。这是一个空元素。它通常用于以不同浏览器支持的多种格式提供相同的媒体内容。

脚本

为了创建动态内容和 Web 应用程序,HTML 支持使用脚本语言,最突出的就是 JavaScript。某些元素用于支持此功能。

元素 描述
<canvas> <canvas>元素可被用来通过JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。
<noscript> 如果页面上的脚本类型不受支持或者当前在浏览器中关闭了脚本,则在 HTML <noscript> 元素中定义脚本未被执行时的替代内容。
<script> 该元素包含全局属性

编辑标识

这些元素能标示出某个文本被更改过的部分。

元素 描述
<del> HTML<del> 标签表示一些被从文档中删除的文字内容。比如可以在需要显示修改记录或者源代码差异的情况使用这个标签。ins标签的作用恰恰于此相反:表示文档中添加的内容。
<ins> HTML <ins> 元素定义已经被插入文档中的文本。

表格内容

这里的元素用于创建和处理表格数据。

元素 描述
<caption> HTML <caption> 元素 (即 HTML 表格标题元素) 展示一个表格的标题, 它常常作为 table 的第一个子元素出现,同时显示在表格内容的最前面,但是,它同样可以被CSS样式化,所以,它同样可以出现在任何一个一个相对于表格的做任意位置。
<col> HTML <col> 元素 定义表格中的列,并用于定义所有公共单元格上的公共语义。它通常位于colgroup元素内。
<colgroup> HTML 中的 表格列组(Column Group **<colgroup>**) 标签用来定义表中的一组列表。
<table> HTML的 <table> 元素表示表格数据 — 即通过二维数据表表示的信息。
<tbody> HTML<tbody>元素封装了一组表行(多个<tr>元素),表示它们构成了表的主体(<table>)。
<td> HTML <td> 元素 定义了一个包含数据的表格单元格。它参与形成表格的结构。
<tfoot> HTML 元素<tfoot>  定义了一组表格中各列的汇总行。
<th> HTML <th> 元素
<thead> HTML<thead> 元素定义了一组定义表格的列头的行。
<tr> HTML <tr> 元素定义表格中的行。 同一行可同时出现td 和th 元素.

表单

HTML 提供了许多可一起使用的元素,这些元素能用来创建一个用户可以填写并提交到网站或应用程序的表单。详情请参阅 HTML 表单指南

元素 描述
<button> HTML <button> 元素表示一个可点击的按钮,可以用在表单或文档其它需要使用简单标准按钮的地方。
<datalist> HTML <datalist>元素包含了一组option元素,这些元素表示其它表单控件可选值.
<fieldset> 这个元素包含所有全局属性
<form> HTML <form> 元素表示文档中的一个区域,此区域包含交互控件,用于向 Web 服务器提交信息。
<input> HTML <input> 元素用于为基于Web的表单创建交互式控件,以便接受来自用户的数据; 可以使用各种类型的输入数据和控件小部件,具体取决于设备和user agent。
<label> HTML <label> 元素(标签表示用户界面中某个元素的说明。
<legend> HTML <legend> 元素用于表示其父元素 fieldset 的内容标题。
<meter> HTML <meter>元素用来显示已知范围的标量值或者分数值。
<optgroup> HTML元素 <optgroup>select 元素中的选项创建分组。
<option> HTML元素 <option> 用于定义在 selectoptgroupdatalist 元素中包含的项。<option> 可以在弹出窗口和 HTML 文档中的其他项目列表中表示菜单项。
<output> HTML <output> 标签表示计算或用户操作的结果。
<progress> HTML中的 <progress> 元素用来显示一项任务的完成进度.虽然规范中没有规定该元素具体如何显示,浏览器开发商可以自己决定,但通常情况下,该元素都显示为一个进度条形式.
<select> HTML <select> 元素表示一个提供选项菜单的控件:
<textarea> HTML <textarea> 元素表示一个多行纯文本编辑控件,当你希望用户输入一段相当长的、不限格式的文本,例如评论或反馈表单中的一段意见时,这很有用。

交互元素

HTML 提供了一系列有助于创建交互式用户界面对象的元素。

元素 描述
<details> HTML <details>元素可创建一个挂件,仅在被切换成展开状态时,它才会显示内含的信息。
<dialog> HTML <dialog> 元素表示一个对话框或其他交互式组件,例如一个检查器或者窗口。
<menu> HTML <menu> 元素呈现了一组用户可执行或激活的命令。这既包含了可能出现在屏幕顶端的列表菜单,也包含了那些隐藏在按钮之下、当点击按钮后显示出来的文本菜单。
<summary> HTML <summary>元素用作 一个details元素的一个内容的摘要,标题或图例。

Web 组件

Web 组件是一种与 HTML 相关联(HTML-related)的技术,简单来说,它允许开发者创建自定义元素,并如同普通的 HTML 一样使用它们。另外,也可以创建经过自定义的标准 HTML 元素。

元素 描述
<content> HTML <content> 元素— Web 组件 的技术套件的废弃部分 — 用于 Shadow DOM 内部作为 insertion point,并且不可用于任何正常的 HTML,现在已被 slot 元素代替,它在 DOM 中创建一个位置,Shadow DOM 会插入这里。
<shadow> HTML <shadow> 元素Web 组件技术套件的废弃部分 — 目的是用作 Shadow DOM insertion point。如果你在 shadow host 下面创建了多个 shadow root,你就可能已经使用了它。在正常的 HTML 没有任何用处。
<slot> HTML <slot> 元素 , 作为 Web Components 技术套件的一部分,是
<template> HTML内容模板(<template>)元素是一种用于保存客户端内容机制,该内容在加载页面时不会呈现,但随后可以(原文为 may be)在运行时使用JavaScript实例化。

过时的和弃用的元素

警告: 下面这些旧的 HTML 元素已被弃用,且不应再被使用。千万不要在新的项目中使用它们,并且要尽快替换旧项目中的残余。 在此列出,仅供参考。

元素 描述
<acronym> HTML Acronym  元素 (<acronym>) 允许作者明确地声明一个字符序列,,它们构成一个单词的首字母缩写或简略语。
<applet> HTML中的Applet元素(<applet>) 标志着包含了Java的applet。
<basefont> HTML标签<basefont>用来设置文档的默认字体大小。使用font可以相对于默认字体大小进行变化。
<bgsound> <bgsound>是IE浏览器中设置网页背景音乐的元素。
<big> The HTML Big Element (<big>) 会使字体加大一号(例如从小号(small)到中号(medium),从大号(large)到加大(x-large)),最大不超过浏览器的最大字体。
<blink> HTML Blink Element (<blink>)不是标准元素,它会使包含其中的文本闪烁。
<center> HTML Center 元素 (<center>) 是个 块级元素,可以包含段落,以及其它块级和内联元素。这个元素的整个内容在它的上级元素中水平居中(通常是 body)。
<content> HTML <content> 元素— Web 组件 的技术套件的废弃部分 — 用于 Shadow DOM 内部作为 insertion point,并且不可用于任何正常的 HTML,现在已被 slot 元素代替,它在 DOM 中创建一个位置,Shadow DOM 会插入这里。
<dir> 已废弃的 HTML 目录元素(**<dir>**)被作为一个文件和/或文件夹的目录的容器,可能还有 user agent 应用的样式与图标。
<font> HTML Font 元素<font>)定义了该内容的字体大小、顏色与表现。
<frame> <frame> 是 HTML 元素,它定义了一个特定区域,另一个 HTML 文档可以在里面展示。帧应该在 frameset 中使用。
<frameset> <frameset> 是一个用于包含 frame 的 HTML 元素。
<hgroup> 这个元素仅包含全局属性。
<image> HTML <image>元素曾经是一个试验性的元素,用来显示图片。它从未被实现过,请使用标准的img元素。
<keygen> HTML <keygen> 元素是为了方便生成密钥材料和提交作为 HTML form 的一部分的公钥.这种机制被用于设计基于 Web 的证书管理系统。按照预想,<keygen> 元素将用于 HTML 表单与其他的所需信息一起构造一个证书请求,该处理的结果将是一个带有签名的证书。
<marquee> HTML marquee 元素(<marquee>) 用来插入一段滚动的文字。你可以使用它的属性控制当文本到达容器边缘发生的事情。
<menuitem> 用户可以通过HTML <menuitem> 元素生成一个弹出式菜单。这包括上下文菜单,以及按钮可能附带的菜单。
<nobr> HTML <nobr> 元素阻止文本自动拆分成新行,所以它展示为长的一行,可能还需要滚动。这个标签不是标准的 HTML,并且不应该使用。反之应该使用 CSS 属性
<noembed> <noembed> 元素是个废除的和不标准的方式,用于向不支持 embed ,或者不支持作者希望的 嵌入式内容 的浏览器提供替代(或者“后备”)内容。这个元素在 HTML 4.01 起废除,以支持
<noframes> <noframes> 是个 HTML 元素,用于支持不支持  frame 元素的浏览器,或者这样配置的浏览器。
<plaintext> HTML 纯文本元素 (<plaintext>) 将起始标签后面的任何东西渲染为纯文本,不会解释为 HTML。它没有闭合标签,因为任何后面的东西都会看做纯文本。
<rb> HTML Ruby Base<rb>)元素用于分隔ruby注释的基本文本组件(即正在注释的文本)。一个<rb>元素应该包装基本文本的每个单独的原子段。
<rtc> HTML <rtc> 元素包含文字的语义注解,它们在 rb 元素中展示。rb 元素可以拥有发音 (rt) 和语义(rtc) 注解。
<shadow> HTML <shadow> 元素Web 组件技术套件的废弃部分 — 目的是用作 Shadow DOM insertion point。如果你在 shadow host 下面创建了多个 shadow root,你就可能已经使用了它。在正常的 HTML 没有任何用处。
<spacer> <spacer> 是过时的 HTML 元素,它可以向页面插入间隔。它由 Netscape 设计,用于实现单像素布局图像的相同效果,Web 设计师用它来向页面添加空白,而不需要实际使用图片。 但是,<spacer> 不再受任何主流浏览器支持,并且相同效果可以简单由 CSS 实现。
<strike> HTML <strike> 元素(或者 HTML 删除线元素)在文本上放置删除线。
<tt> HTML 电报文本元素 (<tt>) 产生一个内联元素,使用浏览器内置的 monotype 字体展示。这个元素用于给文本排版,使其等宽展示,就像电报那样。使用 code 元素来展示等宽文本可能更加普遍。
<xmp> <xmp> 标签之间的内容不会被当作文档内容解析,而会被用等宽字体直接呈现。HTML2 规范建议,本标签中的内容应该具有足够容纳每行80个字母的宽度。

原作者: Mozilla Web Developer Documentation
原文链接: https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element
原文按照 CC-BY-SA 2.5 协议发布,转载请注明出处。

硬件

从早期计算机开始到现在,计算机始终采用冯•诺依曼结构。在这个结构中,有三个基本原则:采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)。
机箱中的主要设备有CPU、内存(包括RAM和ROM)、显卡、声卡、外存(如硬盘)等,这些设备都连接在主板上,并由电源供应器供电。它们连接输入和输出设备以和用户交互。
这里我们需要说明关于内存和外存、RAM和ROM的区别,澄清一个误区。
内存,即内存储器,是相对外存而言的,容量较小,存取速度较快。RAM(Random Access Memory)是用于存储临时数据的,内存条就属于RAM。它可读可写,但是断电后数据就会丢失。ROM(Read Only Memory)通常用于存储主板和其他设备的固件,它只可读不可写,一旦写好就不可能改变。断电后数据不会丢失。
外存,即外存储器,它用来存储大量数据,容量较大,存取速度较慢。它可读也可写,断电后数据依然存在。机械硬盘就属于外存。
平时我们和别人说“内存”的时候(尤其是那些内存外存分不清的人和你聊天),经常容易引起混淆。我们平时交流的时候,提到“内存”的时候,应该指代RAM而不是外存(虽然仅仅指代RAM不太严谨),或者可以用“运存”指代RAM;用“存储”或“外存”指代硬盘,或手机那种64GB/128GB的“内部存储”。咱学过计算机,要显得专业一点(?)
然后我们给外存简单分类。常见的外存有硬盘、软盘和U盘。硬盘分为机械硬盘(HDD)和固态硬盘(SSD)。机械硬盘使用盘片和磁头实现读写,速度相对固态硬盘较慢,但寿命较长;而固态硬盘使用闪存介质,速度快,但寿命短。U盘也使用闪存介质,不过速度没那么快。
不过有一点特殊的:闪存虽然被分类为外存,但是它在物理层面上也属于ROM。而且,闪存虽然属于ROM,但是它是可以读写的,这就和ROM的“Read Only”矛盾了。CDROM光盘被分类为外存,但是它也是一种ROM。这些知识比较混乱,我们就简单了解一下,如果把你弄乱了,那就当这段不存在吧。总之要记住:那个容量小点的内存条是RAM,容量大点的硬盘是ROM,自己要弄清楚,也要尽量让别人弄清楚。

编程语言

编程语言分为低级语言高级语言
低级语言可以直接操作硬件,它的语言不需要翻译就能直接被执行。最常见的低级语言是汇编语言,在现在依然有自己的重要地位,它是每一台计算机的基础语言。在不同型号的设备中,汇编语言有不同的指令集,所以汇编语言和其他低级语言的程序是不能移植的。
高级语言就不同,它可以在任何一台设备上移植。它们需要被翻译成机器语言,所以效率相对机器语言较低。高级语言中分为编译型语言解释型语言。编译型语言(如C/C++)的程序写完后,会由特殊的程序——编译器——编译为二进制文件,之后才能运行。而解释型语言(如Python)的程序会保留源码的状态,在运行的时候由特殊程序——解释器——即时解释运行。因此,解释型语言的运行效率低于编译型语言。运行编译型语言程序时,目标设备不需要编译器;但是运行解释型语言程序时,需要目标设备安装解释器。解释型语言建立在编译型语言的基础上,所以操作系统和解释器都是用编译型语言写的。
值得一提的是,HTML不是编程语言,而是标记语言。它是由一系列标记形成的,只能由特定程序渲染,不像编程语言一样能执行。并不是所有写代码的都是编程语言。

软件

软件可以分为操作系统软件应用软件;也可以分为自由(开源)软件专有(闭源)软件,其中专有软件可分为免费的专有软件和付费的专有软件。
绝大部分自由软件是完全永久免费的,而且源代码公开。它们通常是社区维护,基本不会有侵害用户权利的行为,所以可以放心使用,但是因为很多软件是个人编写,所以有时候也会有功能单一、使用不方便的问题,而且部分作者审美极烂。而专有软件的源代码是不公开的,常常会有侵犯用户权利的行为,如窃取隐私信息、弹窗广告(贪玩一刀999的蓝月)等问题,在免费的专有软件中尤其明显。
开源不是无条件的,它有开源协议。如著名的GPL协议要求修改后发布的程序必须用相同的授权方式(就是用相同的协议)。而有些比较宽松的许可证(协议),如MIT,只要求署名。(具体可以看这里)
操作系统是能直接和计算机的硬件交互的软件,而其他软件需要在特定的操作系统上运行。目前使用最多的操作系统有Windows、Mac和Linux。Windows和Mac分别是由Microsoft和Apple开发的操作系统,而Linux,永远滴神,是由Linus Benedict Torvalds开发的开源操作系统内核和 FSF 组织及相关社区开发的 GNU 程序包组成的,如今已经有了众多分支(如Ubuntu/Linux Mint/Deepin/Debian属于deb系, Manjaro/Archlinux 属于Arch系。),由于其稳定的特性,常常用于服务器。 安卓操作系统也基于Linux。
浏览器是能够下载网络内容,并渲染html和css文本、运行javascript脚本的程序。如今常用的浏览器内核有Trident(IE使用)、Webkit(Safari使用)、Gecko(Firefox使用)和Blink(Chrome/Chromium使用)。绝大多数国产浏览器是在Chromium上套壳产生的,而且使用旧版本内核,都是垃圾,所以全部不建议使用(不接受反驳)。IE由于过于老旧,被Microsoft放弃,也不建议使用。Chrome的云服务被河蟹,无法使用,不爽。我们建议使用的浏览器有Firefox和Edge。
关于杀毒软件的选择,见互联网与网络安全篇。
关于文本编辑器的选择,见文件篇。

互联网与网络安全

当你连接一个网站时,你的计算机在互联网上经历了许多的过程。
首先你的数据被传输到路由器,经过调制解调器(光猫)变成光信号,送到ISP(服务商)那里,如有必要,ISP会将信息传输给其他的ISP,最后到达服务器。这是硬件层面的基本过程,实际还更复杂一些。
众所周知,每个服务器都有一个IP地址。而且访问网站时一定要知道服务器的IP——因为那才是服务器的“地址”。当你输入域名(比如 <www.baidu.com> )或者带域名的网址(比如 <cn.bing.com/dict> )访问网站的时候,你的计算机怎么知道域名对应的IP地址的?在互联网上有一种特殊的服务器,叫DNS服务器。它们没有域名(不然这过程就是套娃了),因此都选择便于记忆的IP,如8.8.8.8。当你要通过域名连接网站的时候,如果你的计算机不知道域名对应的IP是什么,就会向DNS服务器发起请求。DNS服务器无所不知(也许吧),它会返回你需要的IP地址。然后你的计算机再使用IP访问网站。当访问过一次之后,近期再次访问时会直接从本地获取DNS缓存(就是存在本地的DNS信息),不需要从DNS服务器获取数据,速度就更快。另外,系统中还会有一个文件(hosts),允许你自己设置IP和域名的对应关系。所以,配置好hosts文件后,你可以让自己在浏览器里输入<pornhub.com>以访问Bilibili(?)
在这里要说一下域名和IP。域名是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。<tieba.baidu.com> ,<www.luogu.com.cn> ,<github.com> 都是域名。从后面往前数,第几个就叫几级域名,比如 <github.com> 中,github 就是二级域名,com 就是顶级域名(或称一级域名)。而IP分为IPv4和IPv6,它们是两套不同的标准,IPv6的出现是为了解决IPv4地址用完的问题而出现的。IPv4 地址形如 xxx.xxx.xxx.xxx 在IPv4地址中,任何一位都必须是0~255的数字。IPv6则是8组16进制数组成的,如 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 。前导0可以压缩,如 FF01:0:0:0:0:0:0:1101 也是合法的 IPv6。在域名或者IP后面加上斜杠,后面写一些路径,就是网址。<yjzx-site.github.io/events> 就是一个网址。
成功找到服务器后,需要获取数据。这时候需要有网络协议的帮助。网络协议是为计算机网络中进行数据交换而建立的规则,它规定了数据的结构和一系列状态。常见的协议有TCP(传输控制协议)、UDP(用户数据包协议),而HTTP(超文本传输协议)是建立在TCP基础上的协议,HTTPS是HTTP的加强版。我们最常见的“404”,其实就是HTTP表示网页或文件未找到的状态码。
对于个人计算机,常见的入侵有病毒、蠕虫,它们通过网络传播,毁坏计算机系统和数据、降低运行性能;还有特洛伊木马,诱导计算机用户下载并实施破坏,相信各位都清楚。另外的一种方式是间谍软件件(叠词词恶心心),潜伏在计算机中,将用户的账号或文件上传到服务器。
个人计算机连接网络时,也有可能遭到截断。如果有软件在你的计算机中做内鬼,或者有人在网络链路中劫持数据,你访问的网站就可能被重定向,输入的密码可能被窃取。网站使用http协议传输网页的时候,浏览器并不知道返回的IP是否是正确的;但是使用https时,由于使用了非对称加密的安全证书,浏览器就可以知道是否安全。
而对于服务器来说,还有其他的攻击方式。一种是取得服务器的控制权(也就是黑进去),获取或破坏公司数据(因为费这样的力气去侵入家用计算机实在不值得,所以他们也只会对服务器干这事)。另外是DOS(拒绝计算机)/DDOS(分布式拒绝计算机),就是向服务器发送大量数据,使其无力回应,这样其他人就无法访问网站。
对于个人计算机而言,安装杀毒软件自然是不必说的选择。但是我们认为360腾讯管家金山毒霸通通都是垃圾。Windows自带的杀毒软件Windows Defender就是不错的选择,当然也可以用火绒,这两个都是安静的杀毒软件,虽然功能可能没有那么完备(其实就是那些软件里乱七八糟的功能一点用都没有),而且火绒查杀率相对较低,但是对个人使用完全足够(其实有人甚至不用杀毒软件,电脑一点事没有)。另外,当一波船新的病毒席卷网络,Windows用户忧心忡忡的时候,其实Linux用户都在吃瓜。
服务器自然就是加强防护之类的,尤其要加强Linux服务器的超级用户密码。对付DDOS攻击,可以使用拒绝某个IP段的IP访问的方式,来减轻压力。服务器也应该尽可能使用https协议。

文件

文件可以分为文本文件二进制文件。文本文件中除了存储文件有效字符信息(包括能用Unicode码字符表示的回车、换行等信息)外,不能存储其他任何信息。通过一种叫文本编辑器的程序,可以打开查看文本文件。二进制文件则是包含数据或程序指令的文件。二进制文件需要通过特定程序打开查看(如图片/视频),或者它本身就是可执行程序。
文件有编码。它规定了某个数据对应的是哪一个字符。常见的英文编码有ASCII(美国信息交换标准代码),常见的中文编码有GB2312。比如说,字符a的ASCII是97。当计算机读到一个97的时候,就会查询编码,知道这代表字符a,然后传输给其他程序;或者是看到这是a之后,获取a的字体信息,展示到屏幕上。这时候就有个问题了:对于同一个信息,计算机可能根据这一套标准,认为它是“屁”字,也有可能根据另一套标准,认为这是“夘”字。更不幸的是,每种语言的电脑(尤其是windows系统的)都有自己的想法(注:这并不是智械危机),所以印度人给你发的文本,你打开可能就是乱码。而编码里最伟大的尝试便是Unicode。它立志将世界上所有语言的文字全部编码,这样只要所有人都用Unicode编码,就不会出现乱码问题了。因此Unicode也被称为万国码。制作网页、程序最常用的编码就是UTF-8,它是Unicode的一种。
查看/编辑文本文件通常需要文本编辑器。我们认为Windows自带的记事本是最差的文本编辑器,使用它很可能会出现换行错误和编码问题,影响阅读;它编辑的文件因为换行错误,很有可能会引起读取这个文件的程序运行不正常。(这里不得不骂一句Windows NT)我们建议使用的文本编辑器是VScode。强烈不推荐任何国产的文本编辑器。

Markdown 是一种轻量级的标记语言,兼容 HTML ,常常用来编写一些简单的带格式文本。它格式简单易懂,并且贴近自然语言,适合编写简单的文档(而不是用 Word)。

标题

让我们先从标题开始。Markdown 的标题是从 # 开始的,一共分成六级。一般情况下,一级标题只用一次,作为一个文章的大标题,然后各种标题按照级别嵌套,有点像语文书里面有些带小标题的文章。

Markdown语法 预览效果
# 标题 1

标题 1

## 标题 2

标题 2

### 标题 3

标题 3

#### 标题 4

标题 4

##### 标题 5
标题 5
###### 标题 6
标题 6

大概就是这样子了。一般情况下面我们在标题的 # 和标题之间打上一个空格,防止有时候一些编辑器不兼容。

段落和换行

Markdown 中的段落之间是需要至少一行空行来分割的。如果直接换行而没有空行,就会导致这两段实际上是一段,然后就不会换行。比如下面的例子

Markdown 显示效果

我是第一段。

我是第二段。

我是第三段。
我也是第三段。

我是第一段。

我是第二段。

我是第三段。 我也是第三段。

如果要在紧挨着的两行之间换行,需要在前一行的末尾打两个空格,或者在末尾加上 HTML 的 <br> ,就像下面这样

1
2
我是第四段。<br>
我也是第四段。

强调语法

Markdown 里面可以给字加上粗体或者斜体来进行强调,或者也可以粗体和斜体。比如这样

1
Markdown 里面可以给字加上**粗体**或者*斜体*来进行强调,或者也可以***粗体和斜体***

引用语法

要创建块引用,请在段落前添加一个 > 符号。

1
2
> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

渲染效果如下所示:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

块引用可以包含多个段落。为段落之间的空白行添加一个 > 符号。

1
2
3
> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
>
> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

渲染效果如下:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

块引用可以嵌套。在要嵌套的段落前添加一个 >> 符号。

1
2
3
>  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
>
>> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

渲染效果如下:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut

列表语法

Markdown 的列表语法有有序列表和无序列表。有序列表是带数字的列表,就像这样

Markdown语法 预览效果
1. First item
2. Second item
3. Third item
4. Fourth item
  1. First item
  2. Second item
  3. Third item
  4. Fourth item
1. First item
1. Second item
1. Third item
1. Fourth item
  1. First item
  2. Second item
  3. Third item
  4. Fourth item
1. First item
8. Second item
3. Third item
5. Fourth item
  1. First item
  2. Second item
  3. Third item
  4. Fourth item
1. First item
2. Second item
3. Third item
    1. Indented item
    2. Indented item
4. Fourth item
  1. First item
  2. Second item
  3. Third item
    1. Indented item
    2. Indented item
  4. Fourth item

无序列表是由 - (减号)开头的,和有序列表格式一样

Markdown语法 预览效果
- First item
- Second item
- Third item
- Fourth item
  • First item
  • Second item
  • Third item
  • Fourth item

Markdown 代码语法

Markdown 的代码用一对 ` (键盘左上角那个点号)来包裹,比如 code 就可以用 `code` 来指定。(这里之所以能直接打出这个符号是因为用了转义)。

如果需要多行代码则要通过一行独立的三个 ``` 来开始,再一行独立的 ``` 结束。比如下面的

```
我是一个跨行代码
```

显示出来就是

1
我是一个跨行代码

还可以在首行的三点之后打上高亮的语言。

链接和图片

链接和图片都很简单。下面是示例

1
2
3
4
5

这是一个链接 [Markdown语法](https://markdown.com.cn)
这是另一个链接 <https://https://markdown.com.cn>
这是一个图片![一个图片](文件名或者 URL)

显示出来就是

这是一个链接 Markdown语法
这是另一个链接 https://https://markdown.com.cn
这是一个图片(图片没指定,所以显示不了)。

分割线

直接打三个以上的 --- (减号) 或者 ___(下划线)。



转义

可以在特殊字符前面加上反斜杠(\)来进行转义,比如

1
一个没有了的\*\*强调\*\*,一个没有了的\*斜体\*

一个没有了的**强调**,一个没有了的*斜体*。

结尾

大概就是这样子了,应该没啥问题。部分内容参考自 https://markdown.com.cn/ ,有啥问题也可以去查这个网站。

前言

事情发生已经是几个星期以前了,但是我还是要讲讲。
某一天,我们因为某些需要,要注册两个新 github 账号。
于是灾难发生了。

第一天

我们打开了 github 注册页面,开始了人机验证。
这个数骰子的验证我是在 Minecraft 官网上见过的,当时只需要数6点,数5组,并不难。
然而因为这里网络环境的问题,我需要数 12 点,数 5 组之后还要我再数5组。
刚开始我很有耐心地数,慢慢来,结果他说我数太慢了。
于是我找了一个同学来一起数。最后,他说我们数错了一组。
我当时就很气愤。
再来一遍……
这次变成了数 14 点,而且要 15 组,数起来难度更大。而且因为时间限制,更加紧张。
结果还是错的。
于是三个人一起来数,数了两遍,又和我说错了。后来又变成数 20 组了,我们都数吐了,就终于放弃了。
难道不是数不出来才是真人吗???!

第二天

我们找来一个手中拥有某些工具的人,来数。
这次数量少了,心情虽然依然很烂,但是勉强注册了一个。注册第二个时,因为网络太烂连不上,最终没成功。

第三天

依然在数着。
三个人一起数也难以解决问题,一直说我们错了。
最后,我们伟大的 Gaster200521 一个人数了 20 组 14 点骰子并且成功通过,当时我们全部震惊了,并且非常兴奋。
结果……因为网络连接太烂,github 连接超时了,完成的表单(就是验证结果)没能交上去。还是没能注册成功。
我直接裂开了……

最后

某位人回家,注册了一个,因为家里网络环境没那么阴间,很快就完成了。
从那之后,我就非常痛恨骰子。看到骰子就想吐。

原作者: GCVillager
原文链接: https://gcvillager.github.io/posts/count-the-dice/
此文章按照 CC-BY-NC-SA 4.0 协议发布,转载请注明出处。

测试标题1

欢迎来到我们的博客!

测试标题2

这里在测试代码高亮。

1
2
3
4
5
6
#include<iostream>
int main()
{
std::cout << "Hello world!\n";
return 0;
}

HEXO的连接: Writing