之前写css,一直是把position:absolute当做android的FrameLayout用的,其他类似。
后来看了下面的文章,满面羞愧。
这些基础的东西,还是要了解透彻的,一直不求甚解的搞下去,自己都不知道做的什么,为什么会出现这种错误,希望能从下面的内容中,总结出一个类似于Androidlayout的规则。
关于position看下面的文章就够了
http://blog.csdn.net/chen_zw/article/details/8741365
css属性大全
http://css.doyoe.com/
这里主要记一下看完自己的理解:
文档流
首先需要了解什么是文档流,可以理解为方块布局,从上到下,从左到右的布局方式就是文档流。
1.margin和padding是占用文档流的,也就是说,layout函数一定是这么写的
element.margin + elment.width/height +element.padding = dom真正占用的空间。
position:static很容易理解,完全遵循文档流。
position:relative 有点特殊,本身遵循文档流,但可以在文档流中使用top left bottom right设置偏移,偏移不遵循文档流。需要注意的是,后面的dom会按照relative元素不偏移来排列。layout函数中完全可以把relative按照static先处理,最后在当前位置进行偏移。
注:relative static无父辈时以body为参考;
position:absolute 脱离文档流,使用top left bottom right设置偏移,偏移参照为父辈最近的非static元素(之前一直认为absolute参照window,深刻检讨)。
注:absolute无父辈时以html为参考。
1、body默认有9个px的margin
2、absolute的元素没有设置top、left时,默认是文档流的位置,会造成设置了absolute,看起来没有效果的现象。
position:fixed fixed以window为参考(即不管你怎么scroll,位置都不会变),设置偏移。
float:absolute会屏蔽掉float,其他的可以共存。
float不遵循文档流。
clear:clear是配合float使用的。意思是把dom的哪边给清除掉。
如clear:both,意思是两边都不许浮动。
如果我来写 html的layout,
1.dom tree static,relative的按照文档流布局,relative单独处理下偏移,完全不影响文档流。
fixed很简单粗暴。
2.处理absolute float
absolute屏蔽float
absolute需要寻找父辈非static元素直到html,比较蛋疼。这个webkit在渲染的时候会把absolute的元素单独出来一层。
float是浮动排版,按文档流布局就差不多。
当然,css3还有更多的排版方式,上面几种已经基本够用,如果还要学习的话就是box了。