定位是css布局的一部分,很重要,我整理了一下知识点,具体如下
定位的组成
定位布局:定位模式+边偏移(方向英文更改)
边偏移:top、bottom、left、right属性;
定位的精髓:利用更改方向英文来进行位置设置;
定位模式
静态定位:position:static;
相对定位:position:relative;
参照物:相对于自己去进行位置移动;
相对定位特点:相对于自己为参照物进行位移,属于占位定位,盒子仍然在标准流里面;
相对定位是不会改变盒子的显示模式的;
绝对定位:position:absolute;
参照物:绝对定位的参照物默认以父级为主,如果父级没有定位,就一层一层往上找,如果找不到定位的祖先盒子就以浏览器为参照;
注意:绝对定位完全脱离了文档流;
绝对定位特点:绝对定位是完全脱离了标准流不占位的,参照物默认以父级为主,如果父级没有定位一层一层往上找,如果找不到定位的祖先盒子就以浏览器为参照定位;
子绝父相
布局的时候我们一般是上下布局,如果上边的盒子用了绝对定位就会脱离文档流,就会影响下面的布局,所以我们用子绝父相,用了相对定位父级原来的位置是不会改变的;
子级绝对,父级相对,父级盒子定位了,但是依然占位,不会影响其他盒子的布局;
固定定位:position:fixed
参照物:电脑屏幕(可视窗口);
注意:固定定位完全脱离了标准流,参照物是可视窗口为准,和父级没任何关系,IE6不支持固定定位,但是我们现在不用管它,直接使用就可以;
绝对定位的盒子居中对齐(很重要)
绝对定位和固定定位的盒子不能使用margin:auto;设置水平居中,如果想要居中我们就需要如下设置:
设置定位盒子的left :50%; 设置盒子的margin-left:-自己的宽度的一半,让盒子水平居中;
设置定位盒子的top :50%; 设置盒子的margin-top:-自己的高度的一半,让盒子垂直居中;
z-index堆叠顺序
z-index是定位的z轴显示,只能用于相对定位、绝对定位和固定定位,数值越大越靠前,取值没有单位;
如果没有定位属性的话z-index不生效;
定位改变display属性
相对定位不会改变盒子的显示模式;
绝对定位和固定定位会将盒子的显示模式转化成具有行内块元素的特性;
注意:如果给了元素定位属性,默认的宽度是由内容撑开的,所以建议在书写定位元素的时候尽量自己设置宽度;
浮动以后的盒子也会改变盒子的显示模式为具有行内块元素的特性
|
|