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

网页的结构层(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 技术师,就必须熟练掌握这三种技术,并知道每种技术最适用于哪一类问题。

本面试题为前端常考面试题,后续有机会继续完善。我是歌谣,一个沉迷于故事的讲述者。

欢迎一起私信交流。

“睡服“面试官系列之各系列目录汇总(建议学习收藏)

“约见”面试官系列之常见面试题之第四十七篇之前端页面的组成(建议收藏)相关推荐

  1. “约见”面试官系列之常见面试题之第八十三篇之node.js理解(建议收藏)

    1.模块的引用示例 var math = require('math'): 在common.js规范中,存在require()方法,这个方法接受模块标识,此引引入一个模块的api 到当前的上下文中. ...

  2. “约见”面试官系列之常见面试题之第八十篇之css常见属性(建议收藏)

    CSS3增加的新的属性和新属性值很多,其中的重点,比如Flex布局,2D3D效果,关键帧动画等,我们会在其他篇拿出来详细讲解,并附上实例和代码,供大家参考学习.本文只介绍其他常用且兼容性良好(IE9及 ...

  3. “约见”面试官系列之常见面试题第三十五篇之轮循机制(建议收藏)

    目录 前言 任务队列 事件的概念 回调函数 事件轮询机制Event Loop: 结语 前言 有人称Event Loop为事件循环机制,而我更愿意将其解释为事件轮询机制,在之后的内容中你会感受到这一点的 ...

  4. “约见”面试官系列之常见面试题第三十二篇之async和await(建议收藏)

    一.async和await async和await的概念 1)async 函数是 Generator 函数的语法糖,使用 关键字 async 来表示,在函数内部使用 await 来表示异步 2)ES7 ...

  5. “约见”面试官系列之常见面试题之第九十九篇之router和route(建议收藏)

    1.router是VueRouter的一个对象,通过Vue.use(VueRouter)和VueRouter构造函数得到一个router的实例对象,这个对象中是一个全局的对象,他包含了所有的路由包含了 ...

  6. “约见”面试官系列之常见面试题之第八十七篇之ajax发送多个请求优化(建议收藏)

    AJAX中同时发送多个请求(并发)对象处理方法 在javascript:;" rel="nofollow" onClick="javascript:tagsho ...

  7. “约见”面试官系列之常见面试题之第七十七篇之vuex中mutation和action的详细区别 (建议收藏)

    const store = new Vuex.Store({state: {count: 0},mutations: {increment (state) {state.count++}},actio ...

  8. “约见”面试官系列之常见面试题之第六十七篇之jsonp原理和实现(建议收藏)

    一. 同源策略 所有支持Javascript的浏览器都会使用同源策略这个安全策略.看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略. 现在所有支持JavaScript 的浏览 ...

  9. “约见”面试官系列之常见面试题之第五十七篇之强制类型转换(建议收藏)

    JS的类型转换,强制转换和隐式转换 JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123;var str1='123';cons ...

最新文章

  1. Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务
  2. [转]24岁到26岁 奔三的尴尬年纪,你要知道的50件事
  3. 微信小程序开发错误:LoginError {type: ERR_WX_GET_USER_INFO}解决方法
  4. 你真的在正确地使用WLAN控制器吗?
  5. dotnet Core学习之旅(二):安装IDE
  6. java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java)
  7. mysql问题定位_十、MySQL的SQL优化之定位SQL的问题 - 系统的撸一遍MySQL
  8. Flink之状态之状态存储 state backends
  9. ORA-00972: identifier is too long问题解决
  10. JMETER性能测试从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
  11. pycharm是python2.还是3_Pycharm:Python2和3及其的Anaconda的正确设置
  12. CELL_TYPE_STRING cannot be resovled or is not a field
  13. iOS换肤功能的简单处理框架
  14. java计算机毕业设计蔚蓝在线学习平台源码+系统+数据库+lw文档+mybatis+运行部署
  15. IT基础知识(精华版一)
  16. java pojo类
  17. 熟悉Hive 实验2
  18. 观影感受 之 《都挺好》
  19. Mina MEID Activator 2.120210512更新使用说明支持三网(移动、联通、电信)国行版手机解锁打电话4G苹果手机激活锁停用Hello密码锁绕ID屏幕锁密码
  20. Excel 自定义下拉菜单

热门文章

  1. Python之数据加密与解密(hashlib、hmac、random、base64、pycrypto)--转载
  2. 【Python开发】Python的GUI用法总结
  3. 如何运行vue项目(维护他人的项目)
  4. python基础-02
  5. BZOJ 3224: Tyvj 1728 普通平衡树
  6. 一个程序设计试题:读取2维字符数组,判断出表示的数字
  7. html显示hdf5文件,python读取hdf5文件
  8. python3输入输出_Python3 输入和输出
  9. php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?
  10. delphi excel取批注所在的行列_35个Excel使用技巧