realazy


杂感

很多朋友对我说,她/他有代码洁癖,即,让她/他写XHTML的话,从来不愿意加上额外的标签(tag)。举个简单的例子,相信很多人从很多地方都看到过的:

<div id="nav">
	<ul>
		<li></li>
		<li></li>
		......
	</ul>
</div>

很多人,包括许多业界大牛,都建议你这样写即可:

<ul id="nav">
	<li></li>
	<li></li>
	......
</ul>

当然,我个人很欣赏第二种写法,没错,简洁明了,语义(semantic)确凿。但请等一等,如果需要样式化(stylish)它,哪一种可以提供更多的控制(controll)? 很明显,第一种。

然后,这个问题就有点让人抓狂了。一句话:你是结构(markup)优先呢,还是表现(presentation)优先?我相信,在如今这个不美好的时代,表现优先是第一准则。很多有理想的人,包括我,最后为了实现表现上的需要,标签汤(tag soup)实际上难以避免。

所以,这只能是个的问题。别滥用。怎么不算滥用,也没有什么准则。我个人的准则是:如果要实现一个表现上的需要,你使用超过三层的外围标签(wrappers?),就应该停下来仔细想想了。尽管有点老,但我还是建议你看一看SimpleQuiz上面一些有趣的讨论。

为什么会这样?因为一切都不完美。试想一下,如果CSS能够提供更多的规则来控制页面上的元素,或许就不会这么尴尬。比方说,background-image支持trlb(上右下左)四个方向不同的图片的话,我们就不必为处理圆角而绞尽脑汁;支持从页面上产生元素,如content的话,那么也可以大大减少tag的使用……

XHTML?笑话。实际上目前为止没有多少人在用XHTML,一切都是自欺欺人。XHTML is Dead! XHTML是xml,具有xml的一切优越性,但是,我们现在看到的,都是text。如果把text当作xml来处理,这是有害的(Sending XHTML as text/html Considered Harmful)。

尽管我们在Doctype上都标明了我们用的是XHTML,但是实际上我们都在用HTML。这是现实。要不那些错误百出的非良构的页面怎么可能在宽容的当代浏览器中显示呢……也难怪,XHTML 1只是HTML 4的改良而已。但是,未来的XHTML 2并不向后兼容,我不知道我们使用XHTML 1的必要性何在。另外,别拿accessibility来反驳我,分离结构与表现的HTML 4并没有跟XHTML 1有任何区别。

因此,可能,使用XHTML 1的意义在于,宣称我们已经有了这样的思想,并且为未来的XHTML 2做好了准备。

这也是我为什么,强烈建议使用HTML 4.01 Strict Doctype的原因。从公司/企业来说,要求整个团队都具有web standards的思想,并贯彻相关原则并非易事,各种上个世纪遗留的思想仍然负隅顽抗。如果真的使用XHTML 1,很多只能兼容html的JavaScript脚本会失效,编辑某个不经意的未转义的字符会导致整个页面出错(xml parsing error),等等。为了避免问题,或许,HTML 4.01 Strict Doctype是现在的最佳选择。

19 Responses to “杂感”

  1. old9 Says:

    深有同感啊深有同感,冲过来回复一篇。。。
    尴尬的css,不争气的浏览器,彷徨的代码工人。。。唉

  2. etng Says:

    很有想法,很实际的选择。在取舍的问题上,不可能很严格的。

  3. 爆牙齿 Says:

    我觉得,如果你看到了Web标准的威力,你需要做的是如何去淋漓尽致的展现出来,而不是处处妥协处处兼容处处过渡。全面标准化和半标准化差别多大我想你应该清楚,甚至我觉得“99%和100%都是天壤之别”!这句话我常说。
    如果三个人都以90%的态度对待,最终效果不是90%,只有0.9*0.9*0.9=72.9%。同水平的人都如此,你能指望你下级的人以90%的态度对待吗?一层一层低下去,一层一层妥协下去,最后就是面目全非!什么毫厘什么千里,呵呵。

    因为标准,JS不兼容了,好,改JS!
    因为标准,圆角设计有所限制,好,改设计!
    因为标准,一些程序控件不能使用了,好,不准用!
    ……

    是的,我就是这么暴力的去部署标准的,因为我知道100%下标准的巨大威力。所以我全力以赴的向这个目标冲击,即便最终以其他原因失败,我相信也给团队中每个人印象深刻的灌输了标准的理念!而不是风过不留痕。
    团队部署是非常困难的,但是不能以此为由处处妥协让步兼容。我们是先行者,国内的Web标准之风只能靠我们把他吹起来,我们必须把它吹起来,吹出一场风暴,我们的责任!

    加强技术和思路扩大你能控制的局面。而沟通和你的说服能力也非常重要。以不同的语言去说服设计师、说服程序员、说服项目管理、……直到老总。难也就难在这里,非常难,但是必须去做。

    加油吧,与君共勉。

  4. aoao Says:

    还好我的上头对传说中的”标准”有点了解~
    他们看到我改个样式就可以把网站变种色~变种样~~所以要求要用标准~-_-!
    这样程序员可以省点力~可以改得快…-_______________- !

  5. 无色YOU味 Says:

    真的是这样…
    前一阵子我为代码洁癖苦恼了好久…无法忍受扔到我手里需要修改的页面,不够简洁的拖沓代码…
    早点看到这篇文章,也许就会舒服很多。之后又遇到程序员问我,为何要用标准布局,以至于有时候一个小修改都要找设计部,很麻烦。到处都是问题…

  6. 别把WEB标准想的那么神 Says:

    为了什么而标准?全盘的DIV有什么意义。舍弃了数据类的TABLE。去研究ABBR了半天到头来只是自以为。

    的确TABLE不是用来布局的。但是中国的网页布局。在WEB STANDARDS看来是多么的可笑。在一个Hn的右边你偏要弄个more的文字或者图片出来。算是什么?不要忘记,设计first

    其实web standards没什么。CSS的好多东西不是用来实现标准的。

    该用TABLE的时候就用TABLE。象MM里就很多数据类的东西。

    语文学的好才是真的好。学WEB标准到最后来就是玩的语言、语意。文章结构的高手才是真的web高手。

  7. mike Says:

    - - 还没更新……

  8. soni Says:

    我认为爆牙说的对,有些坏习惯提早改正,对谁都有好处。现在是在什么时候应用标准,如果只是几个企业页面的展示,标不标准无所谓了,因为他们压根也没想过要重用代码。过时了,重新制作一个而已。而对于管理系统等逻辑关系比较重要的网站,标准就显得尤为重要,简洁的代码便于程序的移植和更新,前提是结构这个难点的事先计划,css?表现而立,不行就删了重写,拥有一个好的结构,css不是问题。现在,就是对于坏习惯的态度问题。

  9. Aether Says:

    正是如此,这些都是在大量实践以后返朴归真的实言,
    语义和表现,尽在吾彀中已而!

  10. lexrus Says:

    我觉得 ul 外面的这个 div 可以被看做是列表的容器, 如果说 ul 是一份菜单, 那这个 div 就是那本菜单. 这是我一直坚持的所谓 real world structure, 或者说是对浏览器的妥协… 如果要代码完全语言化, xml+xslt 才是目前最好的选择哦.
    p.s. 我用 konqueror 留言, 打字时经常冒出一堆快捷键提示, 有点烦呐.

  11. 杨康 Says:

    支持”爆牙齿”的说法.

  12. realazy Says:

    to lexrus, 针对浏览器,xslt最终也是把xml转化成xhtml/html,然后又不得不碰到这些问题。

  13. yanglei Says:

    我在碰到这种情况时一般会选择第1中,
    我理解把ul放在div里感觉会更好.
    其实有的时候我就一直在想着结构到底哪里能省 哪里不该省

  14. i0ne Says:

    喜欢”标签汤”这个叫法,无奈啊!

  15. skyblood Says:

    如今的前台也在后台化了

  16. wkx Says:

    zhichibiaozhun

  17. 专题:标准化良构之路 - (转载蓝色理想论坛) - 阿淞哥的勃客…我的理想! Says:

    [...] 7.杂感 http://realazy.org/blog/2006/06/25/random-thoughts/ 描述: 编码洁癖,结构优先还是表现优先?值得讨论 [...]

  18. Says:

    个人觉得所有的可以视作“一块内容”的代码,最外层最好是都用div+id,而不要用ul+id或form+id,因为div是不带任何默认属性值的容器,使用起来更便捷。

  19. 无名 Says:

    “别把WEB标准想的那么神”
    这位朋友,看清楚再发言吧,设计first当然是好,但是前提是这个设计还能够称之为
    设计的话

Leave a Reply


realazy (懒到死) is proudly powered by WordPress | Entries (RSS) and Comments (RSS)