1、div的分层
- 布局和定位的区别:布局是屏幕平面上的,定位是垂直于屏幕的
- background 背景的范围是:border外边沿围成的区域
- 文字内容在border上面,border在background上面
- 顺序(从最上方到最下方):内联子元素 => 浮动元素 => 块级子元素 => border => background
- 内联子元素内容 = 正常块级子元素的内容 => 浮动元素中的内容
- 浮动元素脱离文档流,其实就是浮起来了一点的
2、position属性
五个属性:
- static:默认值,呆在文档流内
- relative : 相对定位,升起来,但不脱离文档流
- 用于做位移:很少用
- 用于给absolute元素做爸爸
- 配合
z-index(每个元素默认的z-index=auto,不会创建新的层叠上下文,auto计算值为0,但不等于0) - 绝对不能写z-index=9999
- absolute : 绝对定位,定位基准是祖先里的非static
-
设置absolute的元素的上级元素中,必须设置
position:relative -
脱离原来的位置,另起一层,比如对话框的关闭按钮
-
鼠标提示
-
配合
z-index -
absolute定位是相对于祖先元素中最近的一个定位元素定位的(只要position不是static,就是定位元素)
-
部分浏览器如果不写top/left就会位置错乱
-
善用
left:100%; -
善用
left:50%;加负margin
-
- fixed:固定定位,定位基准是viewport(存在问题)
- 不要把带有fixed属性的元素放到带有transform属性的元素中,会出现不可预知的后果
- 配合z-index
- 注意:手机上不要使用position:fixed,会有无数问题
- sticky:粘滞定位(兼容性太差,很少使用,主要用于面试,适用于导航等)
-
white-space : nowrap;文字内容不准换行 -
鼠标提示,鼠标移过时显示内容:
button span{
display:none;
}
button:hover span{
display:block;
}
3、定位元素的分层
- 只要元素成为了定位元素,也就不是static,就会跑到内联元素内容的上方
- 如果定位元素的z-index的值<0,如-1,就会到background的下方
4、层叠上下文(堆叠上下文)
- 每一个层叠上下文都是一个新的小世界(作用域)
- 一个小世界里面的z-index与外层无关
- 处于同一个小世界里的z-index才能比较
5、哪些不正交的属性可创建层叠上下文
- 查看 MDN文档
- z-index值不为“auto”的相对/绝对定位
- z-index 值不为“auto”的flex项目
- opacity属性值小于1的元素
- transform属性值不为“none”的元素
- position:fixed的元素
- 忘了就搜“层叠上下文 MDN”
- opacity:0.5 设置透明度,与background中的rgba中的透明度设置有什么区别:opacity 设置内容中的所有元素,background中的background只会涉及背景色
6、负z-index与层叠上下文
- 负z-index也逃不出层叠上下文
- 也就是说z-index =-1不一定能逃出一个div,除非这个div不是层叠上下文