一.定位
实现快速精准 脱离文档流束缚的情况下,将元素放在想要的位置.
二.元素的定位属性
主要包括两种定位模式和边偏移模式.
1.定位模式
选择器 { position: 属性值;}
position 属性的常用值.
值 | 描述 |
---|---|
static | 自动定位(默认定位方式) |
relative | 相对定位,相对于其原文档流的位置进行定位 |
absolute | 绝对定位,相对于其上一个已经定位的父元素进行定位 |
fixed | 固定定位,相对于浏览器窗口进行定位 |
2.边偏移
边偏移属性 | 描述 |
---|---|
top | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
bottom | 底部偏移量,定义元素相对于其父元素下边线的距离 |
left | 左侧偏移量,定义元素相对于其父元素左边线的距离 |
right | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
也就是说,以后定位要和边偏移搭配使用. 比如:
top: 100px;
left: 30px;
三.静态定位static
静态偏移的唯一用处: 就是取消定位.
四.相对定位 relative
意思是将元素相对于它在标准流中的位置进行定位. position的取值为 relative.
注意:
1.最重要的一点就是,通过边偏移移动位置,但是原来的所占位置继续占有.
2.每次移动位置是以自己的左上角为基点移动,百分比是继承父级结构的.
(就是说,相对定位的盒子仍在标准流中,它后面的盒子扔以标准流方式对待它.)
五.绝对定位absolute
1.绝对定位完全脱标 相当于自建一个人新的层级.
2.绝对定位的移动相对坐标原点为 相对定位父级的左上角原点.
没有相对定位父级时,以浏览窗口显示区域左上角为定位原点.
有相对定位父级时,以相对定位父级的左上角为定位原点.
3.绝对定位的宽度百分比是继承相对定位父级,并不是继承于结构父级.
子绝父相__________平常用得最多的是子绝父相组合.
六.绝对定位盒子水平/垂直居中
方法一:
1.首先left50% (父盒子的一半大小)
2.然后走自己外边距负的一半值 margin-left
方法二:(比较省事)
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
七.固定定位 fixed
1.固定定位的元素跟父结构没有关系,只认浏览器.
2.固定定位完全脱标,不占有位置,不随着滚动条滚动.
ie6 低版本浏览器不支持固定定位.
八.叠放次序 z-index
要想调节重叠元素的堆叠顺序,可以用 z-index属性,其取值可为整数.
比如:
z-index: -20; /*(font-weight: 700; 一样.不需要加单位)
注意: 1.z-index的默认属性值是0,取值越大,定位元素在层叠元素中越居上.
2.如果取值相同,后书写居上.
3.后面的数字不加单位.
4.只有相对定位/固定定位/绝对定位有此属性(重点)
四种定位总结
定位模式 | 是否脱标占有位置 | 是否可以使用边偏移 | 移动位置基准 |
---|---|---|---|
静态static | 不脱标,正常模式 | 不可以 | 正常模式 |
相对定位relative | 脱标,占有位置 | 可以 | 相对自身位置移动(自恋型) |
绝对定位absolute | 完全脱标,不占有位置 | 可以 | 相对于定位父级移动位置(拼爹型) |
固定定位fixed | 完全脱标,不占有位置 | 可以 | 相对于浏览器移动位置(认死理型) |
十. 定位模式转换
跟浮动一样,元素添加了绝对定位(absolute)和固定定位(fixed)之后,元素变成块模式.
十一.定位使用注意
定位元素会脱标并且独立新开文档流层级,高度依赖定位会导致浏览器压力大,并且在后期维护中因为定位元素并不能跟随文档流进行流动,所以维护成本高。
实际开发中 能用文档流+盒子模型处理的布局 轻易不使用浮动 能用浮动处理的布局 不要使用定位 。 只有在最关键的时刻才使用定位进行布局调整。