什么是W3C

万维网联盟(World Wide Web Consortium,W3C),又称W3C理事会,是万维网的主要国际标准组织。为半自治非政府组织(quasi-autonomous non-governmental organisation)。

历史

万维网联盟(W3C)由蒂姆·伯纳斯-李于1994年10月离开欧洲核子研究中心(CERN)后成立,在欧盟执委会和国防高等研究计划署(DARPA)的支持下成立于麻省理工学院MIT计算机科学与人工智能实验室(MIT/LCS),DARPA曾率先推出了互联网及其前身ARPANET。

该组织试图透过W3C制定的新标准来促进业界成员间的兼容性和协议。不兼容的HTML版本由不同的供应商提供,导致网页显示方式不一致。联盟试图让所有的供应商实施一套由联盟选择的核心原则和组件。

CERN最初打算做为W3C的欧洲分支机构,然而CERN希望把重点放在粒子物理而不是信息技术上。1995年4月,法国国家信息与自动化研究所(INRIA)成为W3C的欧洲机构。1996年9月,庆应义塾大学SFC研究所成为W3C亚洲机构。从1997年开始,W3C在世界各地创建了区域办事处。截至2009年9月,已有十八个区域办事处,涵盖澳大利亚、比荷卢联盟、巴西、中国、芬兰、德国、奥地利、希腊、香港、匈牙利、印度、以色列、意大利、韩国、摩洛哥、南非、西班牙、瑞典。2013年1月,北京航空航天大学成为W3C中国机构。2016年,W3C在英国和爱尔兰创建了区域办事处。

标准

为解决网络应用中不同平台、技术和开发者带来的不兼容问题,保障网络信息的顺利和完整流通,万维网联盟制定了一系列标准并督促网络应用开发者和内容提供者遵循这些标准。标准的内容包括使用语言的规范,开发中使用的导则和解释引擎的行为等等。W3C也制定了包括XML和CSS等的众多影响深远的标准规范。

但是,W3C制定的网络标准似乎并非强制,而只是推荐标准。因此部分网站仍然不能完全实现这些标准,特别是使用早期所见即所得网页编辑软件设计的网页往往会包含大量非标准代码。

什么是MDN

MDN Web Docs(旧称Mozilla Developer Network、Mozilla Developer Center,简称MDN)是一个汇集众多Mozilla基金会产品和网络技术开发文档的免费网站。

MDN历史

该项目始于2005年,最初由Mozilla公司员工Deb Richardson领导。自2006年以来,文档工作由Eric Shepherd领导。

网站最初的内容是由DevEdge提供,但在AOL收购Netscape后,DevEdge网站也宣布关闭。为此Mozilla基金会向AOL获取了DevEdge发布的内容,同时将DevEdge内容搬移到mozilla.org。

MDN本身有一个论坛,并在Mozilla IRC网络上有一个IRC频道#mdn。MDN由Mozilla公司提供服务器和员工的资助。

2016年10月3日发表的Brave网页浏览器将MDN作为其搜索引擎选项之一。

HTML标签列表

根元素节

1
<html>	代表 HTML 或 XHTML 文档的根。其他所有元素必须是这个元素的子节点。

文档元数据节

1
2
3
4
5
6
<head>	代表关于文档元数据的一个集合,包括脚本或样式表的链接或内容。
<title> 定义文档的标题,将显示在浏览器的标题栏或标签页上。该元素只能包含文本,包含的标签不会被解释。
<base> 定义页面上相对 URL 的基准 URL。
<link> 用于链接外部的 CSS 到该文档。
<meta> 定义其他 HTML 元素无法描述的元数据。
<style> 用于内联 CSS。

脚本节

1
2
3
<script>    定义一个内联脚本或链接到外部脚本。脚本语言是 JavaScript。
<noscript> 定义当浏览器不支持脚本时显示的替代文字。
<template> 这个元素在 HTML5 中加入通过 JavaScript 在运行时实例化内容的容器。

章节节

1
2
3
4
5
6
7
8
9
10
<body>	代表 HTML文档的内容。在文档中只能有一个 <body> 元素。
<section> 这个元素在 HTML5 中加入定义文档中的一个章节。
<nav> 这个元素在 HTML5 中加入定义只包含导航链接的章节。
<article> 这个元素在 HTML5 中加入定义可以独立于内容其余部分的完整独立内容块。
<aside> 这个元素在 HTML5 中加入 定义和页面内容关联度较低的内容——如果被删除,剩下的内容仍然很合理。
<h1>,<h2>,<h3>,<h4>,<h5>,<h6> 标题元素实现了六层文档标题,<h1> 是最大的标题,<h6> 是最小的标题。标题元素简要地描述章节的主题。
<header> 这个元素在 HTML5 中加入 定义页面或章节的头部。它经常包含 logo、页面标题和导航性的目录。
<footer> 这个元素在 HTML5 中加入 定义页面或章节的尾部。它经常包含版权信息、法律信息链接和反馈建议用的地址。
<address> 定义包含联系信息的一个章节。
<main>这个元素在 HTML5 中加入 定义文档中主要或重要的内容。

组织内容节

1
2
3
4
5
6
7
8
9
10
11
12
13
<p>	定义一个段落。
<hr> 代表章节、文章或其他长内容中段落之间的分隔符。
<pre> 代表其内容已经预先排版过,格式应当保留 。
<blockquote> 代表引用自其他来源的内容。
<ol> 定义一个有序列表。
<ul> 定义一个无序列表。
<li> 定义列表中的一个列表项。
<dl> 定义一个定义列表(一系列术语和其定义)。
<dt> 代表一个由下一个 <dd> 定义的术语。
<dd> 代表出现在它之前术语的定义。
<figure> 这个元素在 HTML5 中加入 代表一个和文档有关的图例。
<figcaption> 这个元素在 HTML5 中加入 代表一个图例的说明。
<div> 代表一个通用的容器,没有特殊含义。

文字形式节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<a>	代表一个链接到其他资源的超链接 。
<em> 代表强调 文字。
<strong> 代表特别重要 文字。
<small> 代表注释 ,如免责声明、版权声明等,对理解文档不重要。
<s> 代表不准确或不相关 的内容。
<cite> 代表作品标题 。
<q> 代表内联的引用 。
<dfn> 代表一个术语包含在其最近祖先内容中的定义 。
<abbr> 代表省略 或缩写 ,其完整内容在 title 属性中。
<data> 这个元素在 HTML5 中加入 关联一个内容的机器可读的等价形式 (该元素只在 WHATWG 版本的 HTML 标准中,不在 W3C 版本的 HTML5 标准中)。
<time> 这个元素在 HTML5 中加入 代表日期 和时间 值;机器可读的等价形式通过 datetime 属性指定。
<code> 代表计算机代码 。
<var> 代表代码中的变量 。
<samp> 代表程序或电脑的输出 。
<kbd> 代表用户输入 ,一般从键盘输出,但也可以代表其他输入,如语音输入。
<sub>,<sup> 分别代表下标 和上标 。
<i> 代表一段不同性质 的文字,如技术术语、外文短语等。
<b> 代表一段需要被关注 的文字。
<u> 代表一段需要下划线呈现的文本注释,如标记出拼写错误的文字等。
<mark> 这个元素在 HTML5 中加入 代表一段需要被高亮的引用 文字。
<ruby> 这个元素在 HTML5 中加入 代表被ruby 注释 标记的文本,如中文汉字和它的拼音。
<rt> 这个元素在 HTML5 中加入 代表ruby 注释 ,如中文拼音。
<rp> 这个元素在 HTML5 中加入 代表 ruby 注释两边的额外插入文本 ,用于在不支持 ruby 注释显示的浏览器中提供友好的注释显示。
<bdi> 这个元素在 HTML5 中加入 代表需要脱离 父元素文本方向的一段文本。它允许嵌入一段不同或未知文本方向格式的文本。
<bdo> 指定子元素的文本方向 ,显式地覆盖默认的文本方向。
<span> 代表一段没有特殊含义的文本,当其他语义元素都不适合文本时候可以使用该元素。
<br> 代表换行 。
<wbr> 这个元素在 HTML5 中加入 代表建议换行 (Word Break Opportunity) ,当文本太长需要换行时将会在此处添加换行符。

编辑节

1
2
<ins>	定义增加 到文档的内容。
<del> 定义从文档移除 的内容。

嵌入内容节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<img>	代表一张图片 。
<iframe> 代表一个内联的框架 。
<embed> 这个元素在 HTML5 中加入 代表一个嵌入 的外部资源,如应用程序或交互内容。
<object> 代表一个外部资源 ,如图片、HTML 子文档、插件等。
<param> 代表 <object> 元素所指定的插件的参数 。
<video> 这个元素在 HTML5 中加入 代表一段视频 及其视频文件和字幕,并提供了播放视频的用户界面。
<audio> 这个元素在 HTML5 中加入 代表一段声音 ,或音频流 。
<source> 这个元素在 HTML5 中加入 为 <video><audio> 这类媒体元素指定媒体源 。
<track> 这个元素在 HTML5 中加入 为 <video><audio> 这类媒体元素指定文本轨道(字幕) 。
<canvas> 这个元素在 HTML5 中加入 代表位图区域 ,可以通过脚本在它上面实时呈现图形,如图表、游戏绘图等。
<map><area> 元素共同定义图像映射 区域。
<area><map> 元素共同定义图像映射 区域。
<svg> 这个元素在 HTML5 中加入 定义一个嵌入式矢量图 。
<math> 这个元素在 HTML5 中加入 定义一段数学公式 。

表格节

1
2
3
4
5
6
7
8
9
10
<table>	定义多维数据 。
<caption> 代表表格的标题 。
<colgroup> 代表表格中一组单列或多列 。
<col> 代表表格中的列 。
<tbody> 代表表格中一块具体数据 (表格主体)。
<thead> 代表表格中一块列标签 (表头)。
<tfoot> 代表表格中一块列摘要 (表尾)。
<tr> 代表表格中的行 。
<td> 代表表格中的单元格 。
<th> 代表表格中的头部单元格 。

表单节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form>	代表一个表单 ,由控件组成。
<fieldset> 代表控件组 。
<legend> 代表 <fieldset> 控件组的标题 。
<label> 代表表单控件的标题 。
<input> 代表允许用户编辑数据的数据区 (文本框、单选框、复选框等)。
<button> 代表按钮 。
<select> 代表下拉框 。
<datalist> 这个元素在 HTML5 中加入 代表提供给其他控件的一组预定义选项 。
<optgroup> 代表一个选项分组 。
<option> 代表一个 <select> 元素或 <datalist> 元素中的一个选项
<textarea> 代表多行文本框 。
<keygen> 这个元素在 HTML5 中加入 代表一个密钥对生成器 控件。
<output> 这个元素在 HTML5 中加入 代表计算值 。
<progress> 这个元素在 HTML5 中加入 代表进度条 。
<meter> 这个元素在 HTML5 中加入 代表滑动条 。

交互元素节

1
2
3
4
<details> 这个元素在 HTML5 中加入	代表一个用户可以(点击)获取额外信息或控件的小部件 。
<summary> 这个元素在 HTML5 中加入 代表 <details> 元素的综述 或标题 。
<menuitem> 这个元素在 HTML5 中加入 代表一个用户可以点击的菜单项。
<menu> 这个元素在 HTML5 中加入 代表菜单。

什么是空标签

没有闭合标签的标签被称作为空标签。
在我们使用的标签中,有的具有闭合标签。例如<td>标签,它有闭合标签</td>。但是也有一部分标签没有闭合标签,例如<br />标签,这一类标签我们称之为空标签。

常见的空标签有哪些


<input />  用于为基于Web的表单创建交互式控件,以便接受来自用户的数据。
<img /> 代表文档中的一个图像。
<isindex /> 使浏览器显示一个对话框,提示用户输入单行文本。
<area /> 在图片上定义一个热点区域
<base /> 指定用于一个文档中包含的所有相对URL的基本URL。
<basefont /> 用来设置文档的默认字体大小。(目前已废弃 )
<bgsound /> IE浏览器中设置网页背景音乐的元素。
<col /> 定义表格中的列,并用于定义所有公共单元格上的公共语义。它通常位于`<colgroup>`元素内。
<embed /> 用于表示一个外部应用或交互式内容的集合点,换句话说,就是一个插件。 
<frame /> ,它定义了一个特定区域,另一个 HTML 文档可以在里面展示。(已废弃)
<keygen />  为了方便生成密钥材料和提交作为 [HTML form]的一部分的公钥.这种机制被用于设计基于 Web 的证书管理系统。(已废弃)
<link /> 指定了外部资源与当前文档的关系. 这个元素的使用方法包括为导航定义关系框架.这个元素经常用来链接css文件。
<meta /> 元素表示那些不能由其它HTML元相关元素 (<base>, <link>, <script>, 
         <style><title>) 之一表示的任何元数据信息.
<nextid />  是一个过时的 HTML 元素, 它使下一个 web 设计工具能够为其定位点生成自动名称标签。
            它是由该 web 编辑工具自动生成的, 不需要手动调整或输入。这个元素的区别是成为第一个元素, 成为一个 "丢失的标签" 被淘汰的官方公共 DTD 的 HTML 版本。
<param />  定义了 <object>的参数
<plaintext /> 将起始标签后面的任何东西渲染为纯文本,不会解释为 HTML。它没有闭合标签,因为任何后面的东西都会看做纯文本。(已废弃)
<spacer /> 它可以向页面插入间隔。它由 Netscape 设计,用于实现单像素布局图像的相同效果,Web 设计师用它来向页面添加空白,而不需要实际使用图片。(已废弃)
<wbr /> 一个文本中的位置,其中浏览器可以选择来换行,虽然它的换行规则可能不会在这里换行。

什么是可替换标签

在 CSS 中,可替换元素(replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。

简单来说,它们的内容不受当前文档的样式的影响。CSS 可以影响可替换元素的位置,但不会影响到可替换元素自身的内容。某些可替换元素,例如<iframe>元素,可能具有自己的样式表,但它们不会继承父文档的样式。

CSS 能对可替换元素产生的唯一影响在于,部分属性支持控制元素内容在其框中的位置或定位方式。有关详细信息,请参阅本文下面的控制内容框中的对象位置。

可替换标签

典型的可替换元素有:

1
2
3
4
<iframe>
<video>
<embed>
<img>

有些元素仅在特定情况下被作为可替换元素处理,例如:

1
2
3
4
5
<option>
<audio>
<canvas>
<object>
<applet>

HTML 规范也说了 <input> 元素可替换,因为 “image” 类型的 <input>元素就像<img>一样被替换。但是其他形式的控制元素,包括其他类型的 <input> 元素,被明确地列为非可替换元素(non-replaced elements)。该规范用术语小挂件(Widgets)来描述它们默认的限定平台的渲染行为。

用 CSS content 属性插入的对象是匿名的可替换元素。它们并不存在于 HTML 标记中,因此是“匿名的”。

CSS与可替换标签

CSS 在某些情况下会对可替换元素做一些特殊处理,比如计算外边距(margin)和一些 auto 的具体值。

需要注意的是,一部分(并非全部)可替换元素,其本身具有的尺寸和基线(baseline)会被一些 CSS 属性用到,加入计算之中,例如 vertical-align。会只有可替换元素才能具有这种自带值。

控制内容框中的对象位置节
某些CSS属性可用于指定被替换元素中包含的对象应如何定位在元素的框区域中。这些由CSS图像模块第3级和CSS图像模块第4级规范定义:

object-fit
指定应如何将替换后的元素的内容对象安装到包含元素的框中。

对象的位置
指定被替换元素的内容对象在元素框中的对齐方式。