标准化是整个世界的趋势。任何行业如果没有一个行业标准,那么生产只能达到很有限的程度。一个新兴的行业,一开始混乱是不可避免的。各家公司相互竞争,都希望世界接受他们的标准。但在这样一个自由的世界里这几乎是不可能的。当生存受到威胁的时候,互相竞争的公司就会一起合作,联合起来制定一个行业标准。当行业有统一的标准的时候,说明这个行业已经正在走向成熟了。
XHTML, CSS, W3C DOM, ECMAScript, 这些名词将变得越来越常见。 DIV + CSS 的布局方式也终究有一天会完全取代传统的 Table 布局方法。
我在工作室是普及标准的先驱,从开学就在宣传使用标准的方法架构网站,我做的网站也按照这种方法做,并开展了一次讲座(
http://www.myjoin.cn/2005/wdhisshow.php?id=216)。不过讽刺的是我全盘使用 DIV+CSS 布局的网页在非 IE 浏览器中显示都会有问题(尽管内容可阅读),而如果使用 Table 就不会产生这个问题。能让页面同时在 IE6 和 IE7 中显示都正常就已经不错了,不敢奢望它还能在 Firefox 和 Opera 都显示正常——只要办到可访问内容就行了。
现在我们可以照顾 IE6 的用户,当 IE6 和 IE7 中显示效果不一样的时候放弃 IE7 。但想想一年以后, IE6 和 IE7 的用户数量应该已经差不多多了,那时必须保证页面在 IE6 和 IE7 中的显示效果都正常(这不是说必须完全一样,但不能有错误)。
提到 IE6 ,很多网页开发者都会义愤填膺,那实在不是一个好的浏览器,却因为被捆绑在 Windows XP 中而被广泛普及。IE7 是相当符合标准的浏览器(尽管还有些能让我发现的 CSS 的 Bug),大多数出问题的时候,页面在 Firefox 、 IE7 和 Opera 中显示都正常,唯独在 IE6 中显示不正常。这种由 Bug 引起的问题解决起来需要一些运气,因为没有什么固定的方法,说不定怎么弄就会好。比如我以前遇到过背景填充欠缺的问题,结果在后面加一个空的 div 就好了。
IE6 还不支持
但是我们也不能过分讨伐 IE6 ,人家毕竟是6年前发布的浏览器,所以对 CSS 标准支持得不好也是正常的,而且微软向来不甘心屈服于标准,只是形势所迫使得它不得不在新版本的浏览器中提高对标准的支持。
但是我们使用标准开发网页还是有好处的——开发和维护的效率成倍提高。要改变布局,以前用 Table 布局的时候要大动干戈,现在只需要改 CSS 规则中的几个数字。而且在非传统设备(手机等)上浏览网页时可访问性大大提高,用 Table 布局的话浏览器很可能会把内容挤到屏幕外,但用 Div 的话这种情况就好多了。而且现代浏览器更钟情于用标准写的网页。
同一元素的同一属性也会被不同浏览器解释成不同的样式。对我们影响最大的就是 width 的计算方法。在 IE 中 width 不包括 padding ,但 Firefox 包括。这样就十分崩溃了。根据不同浏览器对 CSS 的语法的支持特性可以写出一些 CSS 代码,使得某一种浏览器只识别一些规则,这样便可针对不同浏览器书写不同规则(
http://css-discuss.incutio.com/?page=BoxModelHack),但这样终究不是正规的方法(尽管目前来讲这几乎是最好的解决办法)。我们期待未来的浏览器(IE8, IE9, …; Firefox 3, Firefox4, …; Opera10, Opera11, …)和未来的 CSS3 标准能够统一这些不一致的地方。无论对于网页开发者还是标准的制定者和浏览器、所见即所得网页编辑工具的开发厂商,对标准的普及还有很长的路要走。