定位的分类
**
1. 静态定位(static)
**
就是网页所有的元素都默认都是静态定位,其实就是标准流的特点。在静态定位状态下,无法通过边偏移属性(top、bottom、left、right)来改变元素的位置。
静态定位唯一的用处就是取消定位。
2. 相对定位(relative)
注意 相对定位最重要的是,他可以通过边偏移量位置,但是原来的所占的位置,继续占有;
每次移动的位置,是以自己的左上角为基点移动(相对于自己来移动)
简单来说就是:相对定位的盒子仍然在标准流中,他后面的盒子仍以标准流的方式对待它。(相对位置不脱标);
注:如果说浮动是让多个块级元素一行显示,那么定位的主要作用就是移动位置,让盒子到我们想要的位置。
3. absolute(绝对定位):
注意:
如果文档可以滚动,绝对定位元素会随着他滚动,因为元素最终会相对于正常流的摸一部分定位。
当position属性的取值absolute时,可以将元素的定位模式设置为绝对定位。
决定定位最重要的一点是,他可以通过边偏移量移动位置,但是他完全脱标,完全不占位置。
4. fixed 固定定位
,对于浏览器窗口进行定位
重要的情况:
父级元素没有定位:
若所有父元素都没有定位,以浏览器为准对齐
父级元素有定位:
绝对定位是将元素依据最近的已经定位(绝对、固定、或相对定位)的父元素(祖先)进行定位
子绝父相:
子级是绝对定位的话,父级要用相对定位
绝对定位是将元素依据最近的已经定位绝对、固定或相对定位的父元素(祖先)进行定位。
就是说,子级是绝对定位,父亲只是定位即可(不管父亲是绝对定位还是相对定位甚至是固定定位都可以),或者是子绝父绝或是子绝父相都是正确的。
绝对定位的盒子水平/垂直居中
普通盒子是左右margin 改为auto就可以,但是对于绝对定位就无效了
定位的盒子也是可以或者 垂直居中,有一个算法:
1.首先left:50% 父盒子的一半大小
2.然后走自己外边距负的一半值就可以了margin-left。
例如:left:50%;
margin-left:-50px;
top;50%;
margin-top:-20px;
**