HTML5设计原则(2)

作者:赵振宇 时间:2012-04-26 16:46:45 

二.HTML5设计原则

设计原则, 是一种信念, 一种原则, 一种概念, 是设计原则涉及的人群行动的动力.

不管是W3C在制定规范, 还是通用在制造汽车, 还是我们在编写软件, 甚至是大牛们在创造编程语言, 设计原则也许就是贯穿整件事情的一条主脉, 任何矛盾与挫折都可以用他去衡量.

例如离我们最近的Alibaba公司的设计原则就可以认为是: 让天下没有难做的生意.

再例如Jquery的设计原则是: write less, do more.

说到这里, 我就想起来我们应该问问自己:

a. avoid needless complexity


避免不必要的复杂性

举个栗子:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" href=""/> <script type="text/javascript"></script>

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" href=""/> <script type="text/javascript"></script>
 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href=""/> <script type="text/javascript"></script>

 <!DOCTYPE html> <html> <meta charset="utf-8" /> <link rel="stylesheet" href="" /> <script src=""></script>



仅此而已。好了,就连我也能过目不忘了。我用不着把这几个字符记在记事本里了。我得说,在我第一次看到这个doctype的时候——我当然以为这是一个HTML文档的doctype——被它吓了一跳:“是不是还少一个数字5啊?”我心里想:“这个doctype想告诉浏览器什么呢?就说这个文档是HTML吗?难道这是有史以来唯一一个HTML版本吗,这件事我得首先搞清楚,HTML今后永远不会再有新版本了吗?”好一副唯我独尊的架式!我错了,因为这个doctype并没有这个意思。为此,必须先搞清楚为什么文档一开头就要写doctype。它不是写给浏览器看的。Doctype是写给验证器看的。也就是说,我之所以要在文档一开头写那行XHTML 1.0的doctype,是为了告诉验证器,让验证器按照该doctype来验证我的文档。

浏览器反倒无所谓了。假设我写的是HTML 3.2文档,文档开头写的是HTML 3.2的doctype。而在文档中某个地方,我使用了HTML 4.01中才出现的一个元素。浏览器会怎么处理这种情况?它会因为这个元素出现在比doctype声明的HTML版本更晚的规范中,就不解释呈现该元素吗?不会,当然不会!它照样会解释呈现该元素,别忘了伯斯塔尔法则,别忘了健壮性。浏览器在接收的时候必须要开放。因此,它不会检查任何格式类型,而验证器会,验证器才关心格式类型。这才是存在doctype的真正原因。

而按照HTML5的另一个设计原理,它必须向前向后兼容,兼容未来的HTML版本——不管是HTML6、HTML7,还是其他什么——都要与当前的HTML版本,HTML5,兼容。因此,把一个版本号放在doctype里面没有多大的意义,即使对验器证也一样。

刚才,我说doctype不是为浏览器写的,这样说大多数情况下没有问题。在有一种情况下,你使用的doctype会影响到浏览器,相信在座诸位也都知道。但在这种情况下,Doctype并非真正用得其所,而只是为了达到某种特殊的目的才使用doctype。当初微软在引入CSS的时候,走在了标准的前头,他们率先在浏览器中支持CSS,也推出了自己的盒模型——后来标准发布了,但标准中使用了不一样的盒模型。他们怎么办?他们想支持标准,但也想向后兼容自己过去推出的编码方式。他们怎么知道网页作者想使用标准,还是想使用他们过去的方式?

于是,他们想出了一个非常巧妙的主意。那就是利用doctype,利用有效的doctype来触发标准模式,而不是兼容模型(quiks mode)。这个主意非常巧妙。我们今天也都是这样在做,在我们向文档中加入doctype时,就相当于声明了“我想使用标准模式”,但这并不是发明doctype的本意。这只是为了达到特殊的目的在利用doctype。

这是在Internet Explorer中触发标准模式的最少字符数目。我认为这也说明了HTML5规范的本质:它不追求理论上的完美。HTML5所体现的不是“噢,给作者一个简短好记的doctype不好吗?”,没错,简短好记是很好,但如果这个好记的doctype无法适应现有的浏览器,还不如把它忘了更好。因此,这个平衡把握得非常好,不仅理论上看是个好主意——简短好记的doctype,而且实践中同样也是个好主意——仍然可以触发标准模式。应该说,Doctype是一个非常典型的例子。

简短好记。我能背下来。

标签:HTML5,设计,XHTML2
0
投稿

猜你喜欢

  • XML简易教程之三

    2008-09-05 17:19:00
  • python由已知数组快速生成新数组的方法

    2022-11-01 09:08:36
  • 一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃

    2023-03-02 15:46:48
  • 制作Python数字华容道的实现(可选择关卡)

    2022-12-20 19:32:18
  • javascript验证只能输入数字和一个小数点示例

    2024-04-22 22:29:11
  • python开发入门——set的使用

    2023-09-21 09:39:56
  • 如何在不支持数据库的ASP空间里获取更大的数据库权限?

    2010-06-18 19:35:00
  • Javascript 获取css属性

    2009-05-31 16:49:00
  • Python版的文曲星猜数字游戏代码

    2023-08-12 16:39:19
  • 浅谈Python3中print函数的换行

    2023-12-15 18:24:31
  • 使用graphics.py实现2048小游戏

    2021-03-20 01:47:19
  • javascript 操作文件 实现方法小结

    2024-04-22 12:48:27
  • 在Asp程序中取得表单所有内容的方法

    2010-04-24 16:07:00
  • 微信小程序开发实例详解

    2022-11-07 19:55:48
  • Python+OpenCV绘制灰度直方图详解

    2023-06-09 18:50:50
  • 通过T_sql语句向其中一次填入一条数据或一次填入多条数据的方式填充数据

    2012-11-30 19:55:34
  • PyTorch和Keras计算模型参数的例子

    2023-04-16 10:32:46
  • mysql show processlist 显示mysql查询进程

    2024-01-19 07:42:16
  • python标准算法实现数组全排列的方法

    2022-03-18 15:11:38
  • python Zmail模块简介与使用示例

    2023-07-23 23:42:37
  • asp之家 网络编程 m.aspxhome.com