三位一体的网页:结构层、表示层、行为层

最近在修改博客皮肤的时候,深切体会着 web 标准和网页”样式“、”行为“分享的重要性!今天正好看书看到这一块,就顺便总结一下,跟大家一起分享下。

有许多 web 设计师都有为纸质印刷品设计版面的经验。事实上,设计网站时,把网页当做纸质印刷品来对待是最容易想到的思想,除了把白纸换成了屏幕,其他做法没什么两样。这种做法注定会失败。 Web 是一种不同的媒体。在设计纸质印刷品是时,必须把原始内容和版面设计交织在一起才能看到最终的印刷效果,但在设计网页时,只有将其分离开来才能获得最佳的结果。

最准确的网页设计思路是把网页分成三个层次,即:结构层、表示层、行为层。

网页的结构层(structural layer)由 HTML 或 XHTML 之类的标记语言负责创建。标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出了描述,但这些标签不包含任何关于如何显示有关内容的信息。例如,P 标签表达了这样一种语义:“这是一个文本段。”

网页的表示层(presentation layer) 由 CSS 负责创建。 CSS 对“如何显示有关内容”的问题做出了回答。

网页的行为层(behavior layer)负责回答“内容应该如何对事件做出反应”这一问题。这是 Javascript 语言和 DOM 主宰的领域。

网页的表示层和行为层总是存在的,即使我们未明确地给出任何具体的指令也是如此。此时, Web 浏览器将把它的默认样式和默认事件处理函数施加在网页的结构层上。例如,浏览器会在呈现“文本段”元素时留出页边距,有些浏览器会在用户把鼠标指针悬停在某个元素的上方时弹出一个显示着该元素的 title 属性值的提示框,等等。

分离

在所有的产品设计活动中,选择最适用的工具去解决问题是最基本的原则。具体到网页设计工作,这意味着:

  • 使用 (X)HTML 去搭建文档的结构。
  • 使用 CSS 去设置文档的呈现效果。
  • 使用 DOM 脚本去实现文档的行为。

不过,在这三种技术之间存在着一些潜在的重叠区域,如:DOM 技术可以用来改变网页的结构。在 CSS 身上也可以找到这种技术相互重叠的例子。诸如 :hover 和 :focus 之类的预定义符号(伪 class 属性) 使我们可以根据用户触发事件来改变呈现效果。改变元素的呈现效果当然是表示层的“势力范围”,但对用户触发事件做出反应却是行为层的领地。表示层和行为层的这种重叠形成了一个灰色地带。

伪 class 属性是 CSS 正在深入 DOM 领地证据,但 DOM 在这方面也不是毫无作为。我们完全可以利用 DOM 技术把样式信息施加在 HTML 元素身上。

分离的效果要做到即使去掉表示层和行为层,文档的内容也依然可以访问,因为“内容才是一切”。而且网页的行为层 (javascript) 与其结构 (XHTML) 是彼此互不干扰的,不能混杂在一起。还要给行为层“预留退路”,要考虑到如果你的用户禁用了 Javascript 会怎样?是不可网页还可以正常运作。

额?说了半天发现都是些理论的东西,算是些基本的思想吧,具体的大家要在不断的实践过程中去慢慢体会。

总之,这三种技术就像是一个凳子的三条腿,要想成为一名技能全面的 Web 技术师,就必须熟练掌握这三种技术,并知道每种技术最适用于哪一类问题。

Share with Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网

相关文章本月热门点击排行

  • N/A
Post a comment 2008/11/21 – 22:592,415 Views
Post a comment | Trackback URL | RSS Comments 31 Comments
  1. 2008/11/21 at 23:31 | #1

    这是我的专业,呵呵
    传统的应该是mvc模式,这个是扩充吧

  2. 2008/11/21 at 23:31 | #2

    对了,我的blog现在url可以记住了吧?

  3. 2008/11/21 at 23:46 | #3

    @NickyYe 你学这个的?额?羡慕啊!!呵呵!差不多了,你域名很好记!!

  4. 2008/11/21 at 23:51 | #4

    这次只能路过了 :idea:

  5. 2008/11/22 at 00:01 | #5

    @xiaorsz 程序员…三层架构都知道的哇

  6. 2008/11/22 at 01:30 | #6

    @johnzon 顺路吧~ :!:

  7. 2008/11/22 at 11:24 | #7

    NAME里是我想说的话,所以comment里就不知道说啥了。

  8. 2008/11/22 at 12:26 | #8

    技术博客支持

  9. 2008/11/22 at 12:32 | #9

    说实话,还是不懂……慢慢了解一点~

  10. 2008/11/22 at 13:05 | #10

    @不知道应该叫你小R,小S,还是小Z的朵小朵 额?你的名字好夸张!!叫 xiaorsz 就可以了哈!不过读音我都不知道怎么读!! :!:

  11. 2008/11/22 at 13:07 | #11

    @雅丹地貌 谢谢,但也不纯是技术的,以前还有些乱七八糟的东西!! :grin:

    @老N 我也是在学习中!! :smile:

  12. 2008/11/22 at 13:10 | #12

    顶部的导航栏让我想到phpwind

  13. 2008/11/22 at 14:43 | #13

    @冰古 的确有点像!! :oops:

  14. 2008/11/22 at 14:46 | #14

    倒是想问问你out-link那里是怎么实现的啊? :sad:

  15. 2008/11/22 at 18:50 | #15

    这篇好专业!但是有些内容我没看懂???类似翻译文章。。。

  16. 2008/11/22 at 19:12 | #16

    @Shawn 额?这你都看得出, :grin: 有些是从书上搬来的,是本翻译的书。有些是我自己写的,不过觉得翻译的应该都挺好懂的,应该是我写的那部分没看懂,呵呵!

  17. 2008/11/22 at 19:15 | #17

    @Zoll 这个一开始我是用纯 CSS 实现的,后来又结合 jQuery 实现了!刚准备总结一下,请看下文! :grin:

  18. 2008/11/22 at 19:57 | #18

    @Zoll 没有必要把全部链接 blur,因为虚线对访客来说是一种辅助,能够让他人确定是否点击成功。试想,如果网速非常慢,点了一个页面之后一时半会儿都没反应,访客的第一感觉会是:难道我没点到?然后反复去点。像 Xiaorsz 这套主题,做失焦处理的部分最好只是导航栏那里。

  19. 2008/11/22 at 20:00 | #19

    @xiaorsz 还遇到个很奇怪的问题。。。为什么点 reply 会弹出空白新页面。。。

  20. 2008/11/22 at 20:05 | #20

    这些东西越明确对网页设计越好

  21. 2008/11/22 at 20:33 | #21

    @Shawn 失焦这个问题我都快忘了,呵呵,当时我也考虑过这个问题。你说的也很有道理,看来我得重新考虑下!那个新窗口是我刚改了下代码,想让外链新窗口打开,居然漏掉了 href=javascript 的情况,忧伤,还是没有分离哈!!

  22. 2008/11/22 at 20:41 | #22

    对了,你的meta description 是如何显示日志前几十个字的?那个调用代码怎么写?是调用摘要吗?

  23. 2008/11/22 at 20:44 | #23

    还有….呵呵 那个title 我改过来了.但是title标签里 前面总是有两个空格,你的没有.怎么实现?

  24. 2008/11/22 at 21:32 | #24

    从WEB2.0的时候。结构、表现、行为的分离开始被重视起来。现在,这样做的好处越来越明显。

  25. 2008/11/22 at 22:44 | #25

    我是来留言的,

  26. 2008/11/22 at 23:43 | #26
    HNotify

    你的网站的访问量好大啊~哈哈!
    最开始学习这个WEB设计,接触到的就是这几个词!

  27. 2008/11/23 at 00:25 | #27

    @H 访问量倒不怎么大,就是大家赏脸,留言现在比以前多了些!!掌握好这几个词对 web 设计很重要的!!

  28. 2008/11/23 at 01:36 | #28
    HNotify

    @xiaorsz 要是我能够有这么多人赏脸也就COOL了~

  29. 2008/11/23 at 22:34 | #29

    超出了我的理解深度,呵呵~

  30. 2008/11/24 at 13:21 | #30

    实践是检验真理的最好办法 :-)

  31. 2008/11/27 at 20:47 | #31

    对网页进行分层是有很大好处的。

Post a Comment

(必填)

(必填,有回复时方便邮件通知)

(可不填,填了方便回访)

Sharing technology, recording life