在 CSS 中,通过 position 属性定义元素的定位模式,语法如下:
css 选择器 { position: 属性值; } 定位模式是有不同分类的,在不同情况下,我们用到不同的定位模式。
定位模式决定元素的定位方式 ,它通过 CSS 的 position 属性来设置,其值可以分为四个:
值 | 语义 |
`static` | **静态**定位 |
`relative` | **相对**定位 |
`absolute` | **绝对**定位 |
`fixed` | **固定**定位 |
选择器 { position: static; }
选择器 { position: relative; }
因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。。。
绝对定位的介绍
选择器 { position: absolute; }
3.父元素要有定位
弄清楚这个口诀,就明白了绝对定位和相对定位的使用场景。
这个“子绝父相”太重要了,是我们学习定位的口诀,是定位中最常用的一种方式这句话的意思是:子级是绝对定位的话,父级要用相对定位。
因为绝对定位的盒子是拼爹的,所以要和父级搭配一起来使用。
①子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
②父盒子需要加定位限制子盒子在父盒子内显示。
③父盒子布局时,需要占有位置,因此父亲只能是相对定位。
这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。
总结: 因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位
当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。
疑问:为什么在布局时,子级元素使用绝对定位时,父级元素就要用相对定位呢?
观察下图,思考一下在布局时,左右两个方向的箭头图片以及父级盒子的定位方式。
分析:
结论:父级要占有位置,子级要任意摆放,这就是子绝父相的由来。
选择器 { position: fixed; }
1.以浏览器的可视窗口为参照点移动元素。
2.固定定位不在占有原先的位置。
固定定位举例:
提示:IE 6 等低版本浏览器不支持固定定位。
``` 选择器 { position: sticky; top: 10px; }
```
1.以浏览器的可视窗口为参照点移动元素(固定定位特点)
2.粘性定位占有原先的位置(相对定位特点)
3.必须添加 top 、left、right、bottom 其中一个才有效
跟页面滚动搭配使用。 兼容性较差,IE 不支持。
定位模式 | 是否脱标 | 移动位置 | 是否常用 |
static 静态定位 | 否 | 不能使用边偏移 | 很少 |
relative 相对定位 | 否 | 相对于自身位置移动 | 基本单独使用 |
absolute绝对定位 | 是(不占有位置) | 带有定位的父级 | 要和定位父级元素搭配使用 |
fixed 固定定位 | 是(不占有位置) | 浏览器可视区 | 单独使用,不需要父级* |
sticky 粘性定位 | 否(占有位置) | 浏览器可视区 | 当前阶段少 |