1.布局和定位的区别
- 布局是屏幕平面上的
-
2.一个 div 的分层
代码示例

侧面
3. position 属性的取值(某个元素上的特定类型的定位)
static 静态定位—待在文档流里(默认值)
- relative 相对定位—升起来,但不脱离文档流(需要使用top,bottom,left和right属性)
- absolute 绝对定位—定位基准是祖先里的第一个非static元素
- fixed 固定定位—定位基准是 viewport(视口)
- sticky 粘滞定位—目前兼容性差
3.1.position:relative
- 使用场景
用于做位移(很少用)
用于给 absolute 元素做爸爸
- 配合 z-index
z-index: auto默认值,不创建新层叠上下文
z-index: -2/-1/0/1/2
- 经验
3.2.position:absolute
- 使用场景 示例代码
①脱离原来的位置,另起一层,比如对话框的关闭按钮
②鼠标提示
- 配合 z-index
- 经验
定位基准是祖先里的第一个非static元素(而不仅仅是relative元素)
某些浏览器上如果不写 top/left 会位置错乱
善用 left:100%
善用 left:50%;加负 margin
- chrome展示hover内容的方法
3.3.position:fixed
- 使用场景 示例代码
烦人的广告
回到顶部按钮
- 配合 z-index
- 经验
transform属性会让其不能相对于视口定位
手机上尽量不要用这个属性,坑很多
可以搜下—移动端 fixed
4. 加了 position 属性之后的 div 分层 (也叫层叠上下文)

- 示例
- 比喻
每个层叠上下文就是一个新的小世界(作用域)
这个小世界里面的 z-index 跟外界无关
处在同一个小世界的 z-index 才能比较
- 哪些不正交的属性可以创建它
MDN 文档
需要记忆的有 z-index / flex / opacity / transform
资料来源:饥人谷
