学习Web标准有感

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美化;不要被标准限制了思维。

© 2022 Xiaoxiao’s Weblog. All Rights Reserved. 粤ICP备15088982号