书接前言下面是战术篇,我们通过路线图来先有一个大体印象:
- HTML规范化(Well-Formedness):语法正确
- HTML Validity :语义正确
- 不仅仅是语义正确:HTML元素的用法回归正途
- 正确还不够:关注你的内容
-
- 哪有个完啊:关注网站可用性(Accessibility)
-
-
HTML 规范化 ( Well-Formedness ) :语法正确
-
规范化 ( Well-Formedness ) 是 XML 中的概念,它指文档严格遵守约束。规范化的 HTML 文档结构是一个独一无二的树。 HTML 规范化是发挥 XML 工具强大功能的先决条件,可靠地 DOM 操作也为跨浏览器脚本的提供了一个很好的基础。不规范的页面在浏览器中可能表现千差万别,因为浏览器对错误的理解和处理是不一样的,而规范化的 HTML 让浏览器行为可预测。好处当然还有很多,比如 SEO ,快速加载 … ...
-
下面会有一些规范化的实践指南,作者给出了做这些重构的动机和利弊,大家可以根据自己的情况来选择。下面简单列一下:
- 文档转为小写Change Name to Lowercase
- 属性赋值添加引号Quote Attribute Value
- 省略值不全Fill In Omitted Attribute Value
例如:<input type="radio" value="debit" checked></input> - 空标签添加空属性Replace Empty Tag with Empty-Element Tag
例如:<hr>变成<hr class='empty' /> - 添加结束标签Add End-tag
- 删除重叠Remove Overlap
-
例如: <strong><em>very important</strong></em>!
- 文档编码转成UTF-8Convert Text to UTF-8
- <转义为 < ;Escape Less-Than Sign
- & to &Escape Ampersand
- Escape Quotation Marks in Attribute Values
属性值内字符转义:" to " ' to ' - 添加DOCTYPE声明Introduce an XHTML DOCTYPE Declaration
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> - 实体添加结束符Terminate Each Entity Reference
&之类的实体要不全; 即:& - 使用标准实体名Replace Imaginary Entity References
- 添加根元素Introduce a Root Element
- 添加XHTML的名称空间Introduce the XHTML Namespace
-
-
HTML Validity :语义正确
-
背景介绍:
-
HTML 验证是通过与标准 HTML 规则进行比较的方式,分析 HTML 文档、标记出错误和非标准代码的处理过程。 Web 页面使用 HTML 进行渲染,而 HTML 本身采用了 HTML 规范作为其规则和标准。通过验证 HTML 代码穿越多重浏览器标准!
-
通过验证的文档,能够帮助浏览器反映创作者的意图。通过验证的站点会获得下列优势:页面行为可预测,浏览器兼容问题,未来的浏览器上也可以运行,更容易维护,等等 …
-
通过验证并不是强制要求的,一个规范化但是没有通过验证的文档照样可以使用 XML 工具。如果你有特殊的应用比如 MathXML ,也可以忽略掉通过 HTML 验证。下面简单列出一些要通过验证要做的工作:
- 清除非法标签Remove All Nonexistent Tags
- 添加图像说明Add an alt Attribute
- 嵌入标签换成对象标签Replace embed with object
- 添加严格的文档类型声明Introduce a Strict DOCTYPE Declaration
- Replace center with CSS
- Replace font with CSS
- Replace i with em or CSS
- Replace b with strong or CSS
- Replace the color Attribute with CSS
- Convert img Attributes to CSS
- Replace applet with object
- Replace Presentational Elements with CSS
- Nest Inline Elements inside Block Elements
-
-
不仅仅是语义正确: HTML 元素的用法回归正途
-
一个 Web 开发者可能会有这样的忏悔:我错了,我一直都在用表格做布局,我的页面和样式杂糅在一起 … …
我们可能把原因归结为历史,以前的开发就没有这种理念,历史是这样的么? -
传统的 HTML 是基于 SGML 标准,这个标准诞生于 Web 之前,我们回顾一下:
-
SGML是1986年出版发布的一个信息管理方面的国际标准(ISO 8879)。该标准定义独立于平台和应用的文本文档的格式、索引和链接信息,为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签。其中Markup的含义是指插入到文档中的标记。标记分为两种:一种称为procedard markup,用来描述文档显示的样式;另一种称为descriptive markup,用来描述文档中的文字的用途。 制定SGML的基本思想是把文档的内容与样式分开。
-
-
回顾历史我们应该像佟掌柜一样感慨了:“我错了,我真的错了”
-
如何将文档的内容和样式分开?作者同样给出了一些建议:
- Replace Table Layouts
- Replace Frames with CSS Positions
- Move Content to the Front
- Mark Up Lists as Lists
- Replace blockquote/ul Indentation with CSS
- Replace Spacer GIFs
- Add an ID Attribute
- Add Width and Height to an Image
-
-
正确还不够:关注你的内容
-
一个网站无论如何专业,而用户关注的是网站提供的内容,内容重于形式。纠正拼写错误 Correct Spelling
- 修复死链Repair Broken Links
纠正拼写错误,中文网站中也是存在这个问题的,比如错别字
- 稳定你的链接Move a Page
- 去掉欢迎页面Remove the Entry Page
- 隐藏Email地址防止Email爬虫Hide E-mail Addresses
-
<a href="elharo@metalab.unc.edu">E-mail Elliotte Harold<a/>
elharo@macfaq.com 转换成: -
<a href="mailto:
elharo%40metalab%2Eunc%2Eedu">E-mail Elliotte Harold</a>
elharo@macfaq.Com -
-
哪有个完啊:关注网站可用性 ( Accessibility )
-
电影《追捕》最后真由美问杜秋:“完了吧”,杜秋黯然:“哪有个完啊”
-
HTML 重构也要精益求精,规范的文档丰富的内容还不够,下面的话题就是网站可用性。网站可用性可以争论的东西很多,网站可用性方面的专著很多,这里只是冰山上的一点冰屑而已:
- 图片上包含文字信息就使用文本Convert Images to Text
- 添加字段说明Add Labels to Form Input
- 字段命名标准化而不是Input1 Introduce Standard Field Names
- 打开文本框的自动完成Turn on Autocomplete
- 添加Tab顺序 Add Tab Indexes to Forms
- 添加同一页面的跳转链接Introduce Skip Navigation
- 使用H标签做头信息Add Internal Headings
- 独一无二的内容尽量提前Move Unique Content to the Front of Links and Headlines
- 输入框大一点Make the Input Field Bigger
- 添加表格说明Introduce Table Descriptions
- 添加缩略词说明Introduce Acronym Elements
- 添加语言属性Introduce lang Attributes