9.1 三位一体的网页
9.1.1 结构层
(1)网页的结构层由HTML或XHTML之类的标记语言负责创建。标签对网页内容的语义含义做出了描述。
9.1.2 表示层
(1)表示层由CSS负责完成。CSS描述页面内容应该如何呈现。
9.1.3 行为层
(1)行为层负责内容应该如何响应事件这一问题。这是JavaScript语言和DOM主宰的领域。
9.1.4 分离
(1)在所有的产品设计活动中,选择最适用的工具去解决问题是最基本的原则。
(2)HTML、CSS和DOM脚本,这三种技术之间存在着一些潜在的重叠区域。
9.2 style属性
(1)文档的每个元素节点都有一个属性style。style属性包含着元素的样式,查询这个属性将返回一个对象而不是一个简单的字符串。
(2)样式都存放在这个style对象的属性里: element.style.property
9.2.1 获取样式
(1)当你需要引用一个中间带减号的CSS属性时,DOM要求你用驼峰命名法。CSS属性font-family变为DOM属性fontFamily。
(2)方法和属性其实是关联在某个对象上的函数和变量。
(3)不管CSS样式属性的名字里有多少个连字符,DOM一律采用驼峰命名法来表示它们。
内嵌样式
(1)style属性只能返回内嵌样式。换句话说,只有把CSS style属性插入到标记里,才可以用DOM style属性去查询那些信息。
(2)使用style属性来使用样式不是好方法,表现信息与结构混在一起了。更好的办法是用一个外部样式表去设置样式。
(3)与使用style属性不同,来自外部文件style.css的样式已经不能再用DOM style属性检索出来了。DOM style属性不能用来检索在外部CSS文件里声明的样式。
(4)在外部样式表里声明的样式不会进入style对象,在文档的<head>部分里声明的样式也是如此。style对象只包含在HTML代码里使用style属性声明的样式。
9.2.2 设置样式
(1)许多DOM属性是只读的——我们只能用它们来获取信息,但不能用它们来设置或更新信息。
(2)style对象的各个属性都是可读写的。style对象的属性值永远是一个字符串。
9.3 何时该使用DOM脚本设置样式
9.3.1 根据元素在节点树的位置来设置样式
(1)CSS还无法根据元素之间的相对位置关系找出某个特定的元素。
9.3.2 根据某种条件反复设置某种样式
9.3.3 响应事件
(1)只要有可能,最好使用CSS为文档设置样式。
(2)决定是采用纯粹的CSS来解决,还是利用DOM来设置样式,需要考虑以下因素:这个问题最简单的解决方案是什么?哪种解决方案会得到更多浏览器的支持?
(3)如果想改变某个元素的呈现效果,使用CSS;如果想改变某个元素的行为,使用DOM。
9.4 className属性
(1)与其使用DOM直接改变某个元素的样式,不如通过JavaScript代码去更新这个元素的class属性。
对函数进行抽象
(1)把一个非常具体的东西改进为一个较为通用的东西的过程叫做抽象。