css笔记
relative
relative比较简单,关键是搞清楚它是相对哪个对象进行偏移的。像上面的结构,sub1和sub2 是同级结构,加入sub1有下列属性
#sub1{ position: relative; padding: 5px; top: 5px; left: 5px;}如果sub1不设置它的position属性,那么它将出现在正常的文档流的位置上,但是当设置了position为relative之后,它将相对它本来应该所处的位置进行偏移。偏移是从原对象的的margin的左侧开始的。那么sub2的位置会是怎样呢?其实sub2的位置并未受sub1的位置的影响,sub2还是在原来的位置。同理,如果sub2也设置了position等于relative,那么sub2也还是按照原来的位置进行偏移。
absolute
需要搞清楚的也是它是相对哪个对象进行偏移的。常见的误区:认为设置了position等于absolute的元素都是相对于浏览器窗口进行偏移的。这句话是错误的。相对于谁偏移,分两种情况:
- 当sub1的父级对象也设置了position属性,并且是absolute或者relative的情况下,sub1会按照父级对象来进行定位,定位后,它会溢出文档流,它占据的位置也就不存在,偏移是从padding开始的
- 如果父对象没有一个是设置了position属性的(absolute或者relative),那么将按照浏览器窗口进行定位
fixed
fixed是特殊的absolute,是相对浏览器窗口而言的