关于一个div的分层,背景的范围是border外边沿围成的区域,浮动元素是脱离文档流的,稍微浮起来点.
postion
- static 默认值,待在文档流里
- relative 相对定位,升起来,但不脱离文档流,还处于文档流里,还是有位置的.
- 使用场景:用于位移,用于给absolute元素当爸爸
- 配合z-index
z-index:auto默认值,不创建新层叠上下文——计算出来值为0,0和auto不一样, z-index:-2/-1/0/1/2 使用场景需要看情况 负z-index逃不出小世界
- absolute 绝对定位,定位的基准是祖先里的非static
- 使用场景
脱离原来的位置,另起一层,或鼠标提示
- 配合z-index
- 经验
absolute是相对祖先元素中第一个定位元素定位的,需要写top/left,不然会位置错乱
善用left:100%
善用left:50%;加负margin用于居中
- fixed 固定定位,定位基准是viewport
- 使用场景
烦人广告
回到顶部按钮
- 配合z-index
- 经验
手机上尽量不要使用这个属性
- sticky 粘滞定位 根据文档流进行定位,然后相对它的最近滚动组件/块级祖先,基于top,left,bottom,right进行偏移
white-space:nowrap; 用于处理元素中空白
层叠上下文
每个层叠上下文就是一个新的小世界(作用域)
这个小世界里面的z-index跟外界无关
处于同一个小世界的z-index才能比较
可以通过不正交的属性创建它
z-index/flex/opacity(控制的是整个内容)/transform
负z-index也逃不出小世界,如下面例子,此时container的z-index为默认值auto,demo在container的背景下面,这个时候还不是层叠上下文,给添加不正交的属性来使得demo显示在container的背景上.
<!doctype html>
<html lang="en">
<head></head>
<body>
<div class="container">
<div class="demo">
</div>
</div>
</body>
</html>
<style>
.container {
border: 1px black solid;
width: 200px;
height: 200px;
position: relative;
background: rgba(255,255,0,0.5);
//z-index:0;
}
.demo{
position: absolute;
width: 100px;
height: 100px;
background: royalblue;
z-index:-1;
}
</style>