CSS定位问题:
定位是更加高级的布局手段,可以将元素摆放在页面的任何位置,我们通常使用position来设置定位。
可选值有:
1 | position:static//默认值,没有开启定位 |
相对定位特点:
1.元素开启相对定位以后,如果不设置偏移量是不会发生任何变化的,其中偏移量(offset):当元素开启了定位以后,可以通过偏移量来设置元素位置,包括top,left,right,bottom四个属性来设置位置
2.当开启相对定位以后并没有完全脱离文档流,可以看作肉身依旧占据原来的位置,只是灵魂出窍可以自由设置位置
3.所以相对定位的参照是参照与元素在文档流中的位置即原来的位置
4.相对定位会提升元素的层级,但不会造成布局的改变,可能发生覆盖
绝对定位特点:
1.开启后:元素会从文档流中脱离
2.会改变元素的性质,行内元素会变成块元素,宽高被内容撑开
3.会提升层次
4.偏移量参照物:根据包含快定位,其中包含块指当前元素最近的祖先块元素。那么绝对定位的包含块就是离他最近的开启了定位的祖先元素,如果所有祖先元素都没有开启定位,直接参照根元素
固定定位特点:
固定定位是一种特殊的绝对定位,大部分特点和绝对定位一样,唯一不同:固定定位永远参照浏览器的视口进行定位,不会根据滚动条移动而移动
粘滞定位:
粘滞定位是一种特殊的相对定位,唯一不同:通过设置top,right,left,bottom等偏移量后,当滚动条滑到相应位置之后就固定不在移动
绝对定位元素的特点:
水平布局中,原先要求七元素等式,现在变成九元素,添加left和rigth九个元素之和为包含快的内容区宽度,left和right默认值为auto
如果没有设为auto的值,自动调整right
如果有,调整auto属性
同理属性方向也必须满足对应九元素等式
元素的层级:
对于开启定位的元素,通过z-sizing属性指定层级,参数为整数,值越大,越靠上
层级相同,则显示代码中靠下的元素快
祖先元素的层级再高,也不会盖住后代元素