顾轶灵
「资源的网络」
定位(URL)/ 访问(HTTP)/ 导航(超文本)
To publish information for global distribution, one needs a universally understood language, a kind of publishing mother tongue that all computers may potentially understand.
the publishing language of the World Wide Web
万维网的「粘合剂」
元素 + 属性 + 属性值 (+ 文档结构)
id
属性标示符 (用于引用),不应依赖其语义处理相应元素
class
属性authors are encouraged to use values that describe the nature of the content
title
属性lang
属性内容的语言
head
元素一组元数据
title
元素文档对外的标题
窗口标题 / 历史记录 / 搜索结果标题 / ...
meta
元素name
/ http-equiv
/ charset
name
属性决定种类,content
属性表示内容application-name
, author
, description
, generator
, keywords
)mobile-agent
, baiduspider
twitter:card
, twitter:image
, twitter:creator:id
application-url
, google-site-verification
, googlebot
renderer
(未注册)指向用来组成当前文档的外部资源,通常由 UA 自动处理
用来「导航」到其他资源 (可以在 UA 中打开, 下载, ...)
元素:link
, a
, area
link
元素rel
及 href
属性<link rel="author license" href="/about">
link
+ rel
+ author
, link
+ rel
+ license
都有预定义的语义
link
+ rel
rel="stylesheet"
链接到样式表 (外部资源)
rel="alternate"
链接到当前文档的其他形式 (超链接)
<link rel="alternate" type="application/rss+xml" title="Matt Mullenweg » Feed" href="http://ma.tt/feed/" />
→
link
+ rel
rel="alternate stylesheet"
链接到可替换的样式表 (外部资源)
link
+ rel
rel="prev"
, rel="next"
链接到文档的前一篇 / 后一篇 / 前一页 / 后一页 (超链接)
在生成站点目录、归档视图时很有帮助。
rel="icon"
当前文档的 favicon (外部资源)
a
元素href
属性时为超链接href
属性时为链接占位符<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/news">News</a></li>
<li><a>Examples</a></li>
</ul>
</nav>
与 link
元素不同,a
元素代表的超链接都是显式的。
a
+ rel
rel="prev"
, rel="next"
链接到文档的前一篇 / 后一篇 / 前一页 / 后一页 (超链接)
a
+ rel
rel="nofollow"
当前文档的作者并不推荐超链接指向的文档 (超链接标注)
由 Google 引入,他们认为适用场景有 (via):
实际情况是,搜索引擎一般会抓取,但此链接一般不作为搜索结果排序的依据。
现已被 microformats 社区标准化。
rel
属性其他在 HTML 规范中预定义的 rel
属性值及其含义参见 HTML5 草案中 Link types 一节。
article
元素section
元素div
」何时使用?
一个简单的评判标准:当你希望这个元素的内容体现在文档的提纲 (outline) 中时,用 section
是合适的。
nav
元素a section with navigation links
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/news">News</a></li>
<li><a>Examples</a></li>
</ul>
</nav>
可以帮助 UA 迅速获得导航内容,例如读屏器可以省去很多渲染直接跳到导航位置。
不一定要包含 ul
,也可用自然文本进行导航。
aside
元素h1
–h6
元素header
元素h1
–h6
<header>
<p>Welcome to...</p>
<h1>Voidwars!</h1>
</header>
footer
元素<footer><!-- site footer -->
<nav>
<p>
<a href="/credits.html">Credits</a> —
<a href="/tos.html">Terms of Service</a> —
<a href="/index.html">Blog Index</a>
</p>
</nav>
<p>Copyright © 2009 Gordon Freeman</p>
</footer>
address
元素代表与最近父级 article
或整个文档关联的联系人信息
<address>
<a href="../People/Raggett/">Dave Raggett</a>,
<a href="../People/Arnaud/">Arnaud Le Hors</a>,
contact persons for the <a href="Activity">W3C HTML Activity</a>
</address>
p
元素address
的内容也是一个段落,但有更准确的语义hr
元素hr
元素分隔pre
元素blockquote
元素cite
属性表示该来源的 URLblockquote
外<p>His next piece was the aptly named <cite>Sonnet 130</cite>:</p>
<blockquote cite="http://quotes.example.org/s/sonnet130.html">
<p>My mistress' eyes are nothing like the sun,<br>
Coral is far more red, than her lips red,<br>
[...]</p>
</blockquote>
ol
, ul
, li
元素ol
下 li
元素的 value
属性代表该列表项的序号值<p>Relegation zone:</p>
<ol>
<li value="18">Bolton Wanderers</li>
<li>Blackburn Rovers</li>
<li>Wolverhampton Wanderers</li>
</ol>
dl
, dt
, dd
元素<dl>
<dt><dfn>happiness</dfn></dt>
<dd class="part-of-speech"><i><abbr>n.</abbr></i></dd>
<dd>The state of being happy.</dd>
<dd>Good fortune; success. <q>Oh <b>happiness</b>! It worked!</q></dd>
<dt><dfn>rejoice</dfn></dt>
<dd><i class="part-of-speech"><abbr>v.intr.</abbr></i> To be delighted oneself.</dd>
<dd><i class="part-of-speech"><abbr>v.tr.</abbr></i> To cause one to be delighted.</dd>
</dl>
figure
元素figcaption
)figcaption
元素div
元素class
, lang
, title
等属性结合,为一系列连续的内容增加语义main
元素role="main"
(定义)<main role="main">
<!-- main content -->
</main>
em
元素em
的嵌套个数决定em
的位置不同,文本本身含义不同strong
元素strong
的嵌套个数决定strong
的位置不同,文本本身含义不变<p><strong>Warning.</strong> A huge wave of zombies is approaching.</p>
i
元素class
/ lang
属性搭配使用<p>Sunflower (<i class="taxonomy">Helianthus annuus</i>) is an annual plant native to the Americas.</p>
<p>There is a certain <i lang="fr">je ne sais quoi</i> in the air.</p>
<p><i class="ship-name">Titanic</i> sank in the North Atlantic Ocean on 15 April 1912.</p>
i
元素b
元素class
属性搭配使用<article>
<h2>Kittens 'adopted' by pet rabbit</h2>
<p><b class="lede">Six abandoned kittens have found an unexpected new mother figure — a pet rabbit.</b></p>
<p>Veterinary nurse Melanie Humble took the three-week-old kittens to her Aberdeen home.</p>
[...]
b
元素small
元素<small><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution Share-alike license</a></small>
<small>请以实物为准,图片仅供参考</small>
small
元素s
元素del
元素含义不同u
元素cite
元素<p>My favorite movie is <cite>Transformers</cite> by Michael Bay.</p>
q
元素cite
属性表示该来源的 URLq
而用引号亦正确<p>The W3C page <cite>About W3C</cite> says the W3C's
mission is <q cite="http://www.w3.org/Consortium/">To lead the
World Wide Web to its full potential by developing protocols and
guidelines that ensure long-term growth for the Web</q>.</p>
abbr
元素abbreviation or acronym(区别?)
title
属性的含义为所写的全称<p>The <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr> started working on HTML5 in 2004.</p>
建议在用户不熟悉的缩写词汇第一次出现时用 abbr
+ title
进行语义标注,帮助其理解
dfn
元素dfn
元素指定术语的定义<p>The <dfn><abbr title="Garage Door Opener">GDO</abbr></dfn>
is a device that allows off-world teams to open the iris.</p>
很容易抽取出特定术语的含义,从而很容易回答「What is ...?」类的问题
time
元素datetime
属性值必须是预定义的几种时间格式之一datetime
属性,则会解析其文本内容值code
, samp
, kbd
元素code
- 代码片段samp
- 计算机程序的输出kbd
- 用户输入的内容 / 按键mark
元素<blockquote>
<p>6月13日下午,<mark>一场大雨</mark>过后,正阳门箭楼被带着水雾的脚手架包裹得严严实实。北京旧城中轴线上的这座标志性建筑,正经历着新中国成立后规模最大的一次修缮。</p>
...
<p>6月13日的<mark>那场大雨</mark>,将故宫端门外西朝房冲洗得干干净净。</p>
</blockquote>
<p>作者为什么两次提到6月13日那场大雨?请谈谈你的看法。</p>
mark
元素ruby
, rt
, rp
元素<ruby>和<rp>(</rp><rt>hé</rt><rp>)</rp>谐<rp>(</rp><rt>xié</rt><rp>)</rp>社<rp>(</rp><rt>shè</rt><rp>)</rp>会<rp>(</rp><rt>huì</rt><rp>)</rp></ruby>
目前 IE 5.5+ 以及 Chrome 5+ 支持
span
元素class
, lang
等属性结合,为文本片段增加语义span
ins
, del
元素cite
属性指向对某个修改的说明文档的 URLdatetime
属性表示了修改发生的时间 (取值规范)img
元素src
, alt
属性决定了图片的含义
src
且 alt
为空字符串,代表装饰用图src
且 alt
为非空字符串,图为文档内容的一部分src
且无 alt
,图为内容一部分但无等价的文本内容可用alt
文本替换图片,文档含义尽可能不变<p>
You are standing in an open field west of a house.
<img src="house.jpeg" alt="A white houseThe house is white, with a boarded front door.">
There is a small mailbox here.
</p>
iframe
, embed
, object
, param
元素iframe
- 内嵌的浏览上下文embed
- 外部应用或可交互内容的整合入口object
- 通用外部资源param
- 为 object
元素传递的参数iframe
, embed
, object
, param
元素video
- 视频audio
- 音频公共属性:src
, crossorigin
, preload
, autoplay
, mediagroup
, loop
, muted
, controls
source
元素type
属性中除了 MIME 类型外,可使用 codecs=
来指定编码<video controls autoplay>
<source src='video.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
<source src='video.ogv' type='video/ogg; codecs="theora, vorbis"'>
</video>
track
元素kind
属性描述文本轨的类型subtitles
, captions
, descriptions
, chapters
, metadata
<video src="brave.webm">
<track kind="subtitles" src="brave.en.vtt" srclang="en" label="English">
<track kind="captions" src="brave.en.hoh.vtt" srclang="en" label="English for the Hard of Hearing">
<track kind="subtitles" src="brave.fr.vtt" srclang="fr" lang="fr" label="Français">
<track kind="subtitles" src="brave.de.vtt" srclang="de" lang="de" label="Deutsch">
</video>
table
元素caption
元素table
的标题当所处的 table
是外部 figure
元素的唯一子元素,应首选 figcaption
tbody
, thead
, tfoot
元素thead
表示列头 (通常为列标题,单元格用 th
元素)tfoot
表示列脚 (通常为列数据汇总)col
, colgroup
, tr
元素列,列组,行
td
, th
元素td
- 数据单元格th
- 标题单元格th
的 scope
属性表示标题对应的数据范围
Microformats 是 HTML 的扩展,用来标注人物 / 组织 / 事件 / 地点 / 简历 / 菜谱 / ...
很多格式已是业界的事实标准
(Microformats Wiki)
用 HTML 已有的元素 / 属性,配合对属性值语义的扩展 (主要针对 class
属性) 以及对文档结构的约定来增强 HTML 的语义表达能力。Microformats 的规范本质上就是对一系列常用类型数据 HTML 格式的约定。
text/vcard
, RFC2426) 定义的属性名值定义一一对应允许在现有的文档中嵌入一组项的名值对集合
(W3C 草案)
itemscope
属性用来标注描述项的位置
itemtype
属性itemtype
属性给出该类型的 URIitemscope
属性置于同一元素上itemprop
属性当前项的属性名
itemid
属性当前项的全局 ID (eg. ISBN)
<dl itemscope itemtype="http://vocab.example.net/book" itemid="urn:isbn:0-330-34032-8">
<dt>Title</dt>
<dd itemprop="title">The Reality Dysfunction</dd>
<dt>Author</dt>
<dd itemprop="author">Peter F. Hamilton</dd>
<dt>Publication date</dt>
<dd><time itemprop="pubdate" datetime="1996-01-26">26 January 1996</time></dd>
</dl>
情况复杂,根据元素类型不同,取值方式各有不同
具体请参考 Microdata 规范草案