需要加强的
[ ] 1. document.createTextNode()
[ ] 2. element.clone()
[ ] 3. HTML集合:常用的document.querySelector(); document.querySelectorAll();
3.1 document.getElementsByName()
3.2 document.getsByClassName()
3.3 document.getElementsByTagName()
3.4 document.images
3.5 document.links
3.6 document.forms
3.5 document.forms[0].elements
[ ] 4. node 相关
4.1 nodeName
4.2 nodeType
4.3 tagName(非node,但)
[ ] 5. tagName
[ ] 6. 获取DOM元素,用jquery
比较多,有相似的地方
6.1 childNodes
6.2 nextSibling
6.3 firstNodes
6.4 lastNodes
6.5 previousSibling
6.6 children只有在IE6/7/8中使用
6.7 className
6.8 appendChild
6.9 replaceChild
[ ] 7. 获取元素的计算属性:
7.1 getComputedStyle()/currentStyle
7.2 cssText
[ ] 8. 文档片段:
7.1 document.createDocumentFragment()
爬虫相关
- document.images
- document.links
可以参考使用css3 animation
来制作动画,原则:能用css解决的尽量使用css解决;
制作动画需要谨慎的事
- 使用绝对位置定位页面上的动画元素,将其脱离文档流;
- 让元素动起来。当它扩大时,会临时覆盖部分页面。但这只是页面一个小区域的重绘过程,不会产生重排并重绘页面的大部分内容;
- 当动画结束时恢复定位,从而只会下移一次文档的其他元素。
小结
最小化DOM访问次数,尽可能在JavaScript端处理;
如果需要多次访问某个DOM节点,请使用局部变量存储它的引用;
小心处理HTML集合,因为它实时连接着底层文档。把集合的长度缓存到一个变量中,并在迭代中使用它。如果需要经常操作集合,建议把它拷贝到一个数组中。
如果可能的话,使用速度更快的API,比如querySelectorAll和firstElementChild
要留意重绘和重排;批量修改样式时,"离线"操作DOM树,使用缓存,并减少访问布局信息的次数;
动画中使用绝对定位,使用拖放代理;
使用事件委托来减少事件处理器的数量;