http://hknng.3322.org/hknng/archive.php/article/277.html#reply997
比较同意上述看法.以下为转帖.
经过 2 个月的 Web 标准(Web Standards)学习后,按标准重构了自己的聆听小区。其实准确来说还没有完全按标准,主要是语义化方面还符合得不好。
刚重构完聆听小区时,经常到蓝点的论坛上看看关于 Web 标准的帖子,然后也有些自己的感想,零零散散地作了些回复。现在把这些感想集中起来收于本文,权当对前一段时间 Web 标准学习的总结。本文可能谈 Web 标准的缺点会比较多,因为其优点现在铺天盖地,不需要我多说。无法接受 Web 标准的缺点的读者不建议阅读本文。
Web 标准的效率:熟悉了 Web 标准以后,单人效率确实很高,但如果团队开发,要求每个人都熟悉标准不是一件容易的事,需要一定的时间。
Web 标准的兼容性:目前浏览器极不统一,同一代码在不同浏览器中一致(不包括文本界面下的浏览器等特殊浏览器)应该是建立标准的目的之一,但目前这实现不了,于是为了兼顾标准又兼容各种浏览器,弄出了各种小技巧,结果是使本来简洁下来的代码又变复杂了。有人甚至声称,用 Web 标准就是为了相同的代码在不同浏览器中有同一效果。事实上以目前的浏览器形势,table 布局得到的同一性比 div+css 大得多。至于以后浏览器对 Web 标准兼容性可能会普遍改善是后话。
有人问:“标准应该是提倡表现和语义分离,如果我用 table 排版,然后所有的 table 属性或表现均用 css,这算不算符合标准?”
我的解答是:这样做表现和语义是分离了,但是语义用得不对,所以还不算合标准。html 标签除了 span 和 div 可称为无特定语义外,其它标签都有特定语义,像 table 就表示表格。标准除了提倡表现和语义分离,还提倡正确使用语义标签,就是该是文档最高级标题,就用 h1,该是文章段落就用 p,该是表格就用 table,只有在无法用已有特定语义标签表示语义的情况下才用 div/span。尽管 table+css 可以实现布局,尽管 div+css 可以实现 p,尽管 span+css 可以实现 strong,但这些都不符合标准。
从上面这一点可看出,很多 Web 标准教程都误导了初学者,我也曾经被误导过。
初学时不懂什么是 Web 标准,有的说简而言之就是 XHTML+CSS 标准,又有的说简而言之就是用 div+css 布局替代传统的 table 布局。于是我以为在 XHTML 中取消了 table 标签,但查 XHTML 的官方规范,查了半天没有发现不能用 table 的地方。不久又看到一篇文章叫《使用 DIV 之后,什么时候使用 TABLE》,说是 table 标签仍要用来展示表格式数据,这就使我更加困惑了。
事实上,把 Web 标准简称为 XHTML+CSS 标准或 div+css 布局标准都是严重的错误。Web 标准由很多标准组成,所以其英文 Web Standards 是复数的。Web 标准的成员主要有:XHTML、CSS、DOM、WCAG。其中代表 WAI 的 WCAG,尤其其中的语义化要求(即要求正确使用语义标签),是 Web 标准的精华所在,但却又经常被人们忽视。div+css 的布局,正是 WCAG 的要求。table+css 布局不违背 XHTML,也不违背 CSS,但却违背 WCAI。table 作为表格的语义,只应该用在展示表格式数据的场合而不应该用来布局,这就是 WCAI 的语义化要求。由于在 Web 标准的理解上出现了偏差,忽视了 WCAG,于是就导致了下一点问题。
经常看到有人强调 Web 标准与美观不冲突,然后列举若干漂亮的网站。其实不强调我倒没有留意这个问题,大家都强调,反而引起我探究了一下 Web 标准与美观究竟是否冲突。
我认为,Web 标准与美观确实是有冲突的。其冲突不体现在 XHTML 上(XHTML 只是对 HTML 的代码形式加入了要求,使得形式上符合 XML 规范,以前 HTML 可以用的东西,基本上 XHTML 也可以用),更不体现在 CSS 上(CSS 的美化功能令人叹为观止,自然不会跟美观过不去),而是体现在语义化上。当完全从语义化出发写好一个 XHTML 之后,再考虑布局、美化,选择的余地就不大了,除非你加些冗余的 div 标签来增大 css 美化的选择,但这样又不符合语义化要求了。
21andy 在蓝点论坛上提出了学习 Web 标准要先学好语义化,其中举了如下一个例子:
标准的内容代码为:
I love SEX
I very very very love SEX, and go to bed with beautiful Girl
当为了使这段内容适应设计的表现,如为圆角的区域,可以在设计的时候改成这样
I love SEX
I very very very love SEX, and go to bed with beautiful Girl
以让 CSS 有设计的余地,而不是在制作内容页的时候,就把这个 DIV 写上.
于是我就对这个例子提问到:后来又人为地加个 div 是否说明表现与内容始终不能彻底分离,语义化离现实的网页设计还有差距呢?
21andy 承认了这的确是 Web 标准还不尽人意的地方。
我建议大家再认真研究一下那些被用来证明 Web 标准与美观不冲突的漂亮网站,它们很可能能通过 XHTML 验证和 CSS 验证,但有多少个能符合 WCAG?有多少个是真正语义化地使用 HTML 标签?
如果语义化要做得很好,恐怕就只能像 W3C 上的各种文档那样纯粹白纸黑字了。
旧有的 HTML 和现在的标准,前者更像艺术创作而后者更像书写正规文件
艺术创作,当然可以形式多样,充分发挥艺术家的想象力,想怎么样就怎么样,管它龙飞凤舞,管它水彩水粉油画,只要最后出来的效果能令观众拍手叫好,这就是好作品,即使水彩水粉混用一气。
正规文件,当然要强调其正规性、规范性,例如国家法律,有条有理,有章有法,又例如 W3C 那些易用性(WAI)达到两个 A 三个 A 的网页,都是白纸黑字,规规矩矩。
艺术创作总是会牺牲一些欣赏者的,聋人听不到音乐,盲人看不到美术作品,文盲的人读不懂诗歌散文。自然,旧有的 HTML 也要牺牲通过 PDA、手机、阅读机“看”网页的欣赏者。
正规文件总是要努力到达它应该到达的每一位读者、观众、听众。不管是盲人、聋人还是文盲,都要接受学习国家各种法律法规,不管是通过读、听、摸或者其他形式。
Web 标准不是万灵药,至少现在还不是。一个简单的例子:Web 标准的易用性总是强调照顾盲人使用阅读机;那么现在要做一个毕加索抽象画的在线展览,每一幅画作为网页内容当使用 img 标签,试问其 alt 和 longdesc 属性怎样写才能使盲人无损接受抽象画的信息呢?
HTML 与 XML 虽然都以 ML 结尾,虽然都是用尖括号“<”和“>”来表示标签,但这两个东西骨子里有很大差别。XML 只有内容,而 HTML 一直以来是用来展示网页的,当然以表现为主,内容次之。现在 Web 标准硬要把 HTML 往 XML 上靠,把表现全部甩给 CSS,不是说不可以,但是恐怕不是短时间内能够实现的。
Photoshop 也有文字工具,为什么我们不用 Photoshop 写文档?Word 也能处理图像,为什么我们不用 Word 做平面设计?
综上所述,在 Web 标准的现阶段,我的建议是:
遵循 XHTML 规范和 CSS 规范;
至于语义化,在语义明确的地方选择准确的语义标签;网页设计中难免有些元素语义含糊不好选择准确的语义标签,此时不应拘泥,大概用一个,或者就用 div 或 span;
设计网页时不建议写纯语义化的 XHTML 后再布局美化,这样极度限制思维;建议从布局入手写 XHTML,然后用 CSS 美化;不要被标准限制了思维。
