绝对定位的特性
绝对定位与浮动相似,都有破坏性和包裹性。浮动的一些应用场景中也可用绝对定位替代
绝对定位的行为表现
无依赖绝对定位元素
在未手动定位的情况下,绝对定位元素有以下特性
- 去float化 – float属性将会失效
- 跟随性 – 根据原有位置脱离文档流放置
无依赖绝对定位元素 —— 即未手动定位的绝对定位元素
无依赖绝对定位元素的使用
无依赖绝对定位元素可以使用margin值进行定位,实现脱离文档流的相对定位效果,脱离文档流可以解决溢出限制的问题
应用实例:
- 图标定位:角标之类的可以使用DOM位置结合绝对定位margin偏移实现定位,不一定要使父容器成为包含块
- 下拉框定位:下拉框和输入框之间的联系可以使用绝对定位margin偏移实现
- 边缘定位:利用跟随性,使元素跟随空白字符放置
- 图标对齐和文本溢出处理
绝对定位脱离文档流
- 绝对定位+动画,避免回流和重绘
- 覆盖层级,z-index + 绝对定位 > 后置绝对定位元素 > 前置绝对定位元素 > z-index > 普通元素
https://codepen.io/curlywater…
绝对定位和width/height
- 无固定width/height,绝对定位方向是对立的(如left vs right, top vs bottom)的时候,绝对定位元素拉伸。可应用于宽高自适应
- 有固定width/height,绝对定位拉伸失效
- 固定width + left + right,相当于元素有了一个固定宽度,这时使用margin: auto可达到居中效果
总结
绝对定位相对于包含块定位;
在日常使用种,一般会习惯性对父容器使用relative,使用top/bottom/left/right来脱离文档流的绝对定位;
但无依赖绝对定位元素结合margin偏移使用也可以实现一些实用的效果。
利用绝对定位元素脱离文档流的特性,使用动画可以避免大范围的回流和重绘。
绝对定位元素拉伸实现宽高自适应,可应用于大范围的布局。