元素在页面中的布局遵守一套文档流的方式,默认的定位属性值为static。它其实是未被设置定位的。
元素如果被定位了,那么它的top,left,bottom,right值就会生效,能设置定位的属性是relative,absolute和fixed。
需要注意的另一点是被定位的元素层次(z-index)会得到提高。
定时器和线程
读了《javascript 忍者秘籍》后对定时器的一些心得。
定时器提供了一种让一段代码在一定毫秒之后,在异步执行的能力。(html5 web worker 对定时器做了很多改变,IE不支持)
定时器有一个很重要的概念 javascript定时器的延迟时间是不确定的
在web worker可用之前,浏览器中的所有javascript代码都是在单线程中运行的。这种情况下,异步事件的处理程序,如用户界面事件和定时器,在线程中没有代码执行时才进行执行。也就是说,处理程序在执行时必须进行排队执行,并且一个处理程序不能中断另一个处理程序的执行。
定时器对队列的工作方式是,当特定的时间过去后,将代码插入,注意添加到队列并不
意味着它会马上执行,而只能说它会尽快执行。对于定时器来说,指定的时间间隔表示何
时将定时器的代码添加到队列中,而不是何时执行代码。
Animation小结
实现平滑动画的两个因素:Frame Timing(新的一帧准备好的时机)&& Frame Budget(渲染新的一帧需要多长的时间)
绘制频率
页面上每一帧变化都是系统绘制出来的(GPU或者CPU),它的最高绘制频率受限于显示器的刷新频率(而非显卡),所以大多数情况下最高的绘制频率只能是每秒60帧(frame per second,以下用fps简称),对应于显示器的60Hz。60fps是一个最理想的状态,60fps是动力也是压力,因为它意味着我们只有16.7毫秒(1000 / 60)来绘制每一帧。在日常对页面性能的测试中,60fps也是一个重要的指标,the closer the better。
Progressive Enhancement
所谓农村包围城市——渐进增强
针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。
CSS的“渐进增强”有别于CSS hack,hack可以说是提供选择,你死我亡,竞争效应;而“渐进增强”属于更进一步,锦上添花,辅助效应。前者应尽量避免使用,而后者适当使用则有裨益。
渐进增强比较注重内容,即从内容出发,内容为样式和交互构建起坚实的基础。
关于 BFC
BFC(Block formattingcontext)直译为”块级格式化上下文”。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干.(简单点说,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用)
W3C的定义`
浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。