日期:2014-02-25 浏览次数:21304 次
这个时代DIV+CSS曾经创造着新的神话,不久的将来,也许你所访问的互联网将不再出现Table。
作为一个身处2008年末的Web设计师,你能否好意思承认本人的代码中使用了Table,如果是,你是一个有勇气的人,Web设计是个奇怪的行业,你可以将本人的网站设计得像晚报的分类广告,或者楼道里的开锁广告,但千万别让人知道你使用了Table,在你的源代码中发现Table就像一个销售被人掀起裤脚发现穿了白袜子一样。
Table是如此丑陋,臃肿,哪怕只显示一段简单的内容,你也需求<table><tr><td>这三个基本的标签,每个标签里面还要加上一堆乱七八糟的属性,不像<div>,既简单,又整洁,又时髦,它和CSS珠联璧合,琴瑟和谐,它们构成最完满的Box模型,他们象理想中的箱子,你把东西放进去,然后,很自在地对他们进行陈列,腻烦了一种规划,没关系,简单地改动一下CSS定义,一种全新的规划便诞生了;不象Table,Table像食堂里的餐具柜,一排排,一列列,土里土气,清淡腻的,象我们的父辈,邋遢,什么都往家里拿,胡乱堆在角落里,如果Div是小资,Table就是老三届,他们不属于这个时代。
也就是近几年的事,至少不过三五年,W3C是一团体人都认为重要但人人都不喜欢的组织,他们的官方网站十分丑陋,我敢说平生没见过这么丑陋的网站,但他们的网站是为数不多的可以通过全部W3C标准验证的网站,这意味着,他们的网站在语法上,在结构上,在可访问性上是完满的,虽然照旧十分丑陋。不过这是笑谈,W3C非常重要,否则微软会把全体Web开发工程师带到万劫不复的境地,还好,Netscape死后,涅磐出Firefox,而Opera在Firefox横空出世之后虽然没得到任何好处,至少得到了精神上的支持,看到没,终于有大哥出来收拾你。乔布斯复出后,苹果重返昔日的光芒,这时人们才知道世界上还有一个叫做Safari的浏览器,所有这一切加在一同,让W3C真正有了存在的必要。
W3C说,Table可以用来容纳文字,格式文字,图片,链接,表单,以及其它Table。..但是,Table不应该单纯用来做网页规划(Tables should not be used purely as a means to layout document content),理由是,当Web被非可视化设备渲染的时候,Table会出现问题,他们指定是屏幕阅读器以及盲文浏览器,另外,Table在大型显示设备上会强迫用户左右滚动,因此,Web设计者应该使用CSS而不是Table。参见W3CHTML4.01关于Table的定义。W3C说这段话的时候,是1999年12月24日,那时虽然CSS早已诞生,但并没有多少人使用,最后的Web像一个在线版的文档,并没有成为如今这样的平台,不需求过多过多地考虑规划问题,随着互联网第一次泡沫的构成,涌现出大量的门户网站,门户网站是Table规划的始作俑者,由于他们的首页比一整份报纸的所有版面拼接在一同还复杂,Table在这方面十分顺手,结合colspan和rolspan,你几乎能够实现任何复杂的版面。
这种规划风格在2000年代初,不断到中期仍然十分流行,尤其国内,在大为美的潜认识下,人们把所有能塞到一个页面的东西都塞进了首页,Table就像一个旧时代的管家,把所有东西虽不能井井有序,但至少是一样不少地编排起来。然而这样的Web终于到了让人讨厌的地步,随着搜索,RSS订阅,以及以博客为代表的特性化Web的出现,人们有更多渠道获得信息,而不必去访问那几个让人几乎要晕过去的门户的首页,于是出现了一种清新的,轻量的Web风,使用更简单的规划,更明快的配色,大图标,大Banner,以及更容易阅读的大字体,同时,在这个时候,CSS曾经非常成熟,而Firefox,Opera,Safari为代表的浏览器,在恪守W3C标准方面要远远好过IE,人们终于认识到CSS的威力。由于CSS在规划上,其核心是一个Box模型,人们必须为CSS找一个可以依靠的容器对象。
Div成为侥幸者一方面由于它天生就是Box的最佳原型,在语义上,Div代表页面的一个区域,在外形上,它四四方方,更重要的是,它不像<P>或<a>那样事先曾经被赋予特殊的语义(虽然它们也能用于Box模型);另一方面,则出于人们对Table统治一个臃肿时代的憎恨,一个时代的结束,继任者都会努力抹去旧时代的痕迹,那些旧时代的意味或代表的命运多半如此,人们并不是简单地忘却它们,而是断然划清界限。
Table的一切不公允待遇就此开始。为什么说不公允,W3C不建议Table规划的时候,只说应使用CSS代替,这是什么意思,Table不支持CSS吗?当然支持,而且,由于Table作为老牌的HTML对象,它的地位曾如此重要,任何浏览器都对Table提供了最完满的支持,包括CSS支持。当人们拥抱Div的时候,似乎忘记了Table也是Box,而且是一个拥有多个内格的Box,Table作为一个全体,和Div在Box模型方面没有任何区别,而它的内格,除了Margin之外,仍然是一个Box,内格不含Margin概念这是应该理解的。Div很优秀这不必说,然而当人们说Div+CSS的时候,似乎暗示着Table无法CSS,这是天大的误会。
Div支持的所有CSS属性,Table全部支持,理想上,在Div大红大紫之前,那些Div的晚期采用者曾决心不足地表示,Table能做到,Div都能,而他们也为本人的话付出了代价,企图在Div中实现垂直居中的人明白我的意思,企图在IE6中不经CSSHack而实现100%Div规划的人更明白我的意思。100%Height问题,几个Div之间的宽度自顺应问题,置信任何从事Div+CSS设计的人会遇到。Table在这方面的优势并不是由于它本身多么优秀,而是由于它老牌,没有浏览器敢忽视,也由于它的特性本来如此,人们发明表格,是由于希望数据显示得划一,就这么简单。