11.【CSS】定位

189 阅读3分钟

1.定位、布局的区别

布局是平行于屏幕的,定位是垂直于屏幕的

了解定位前,复习一下盒模型和文档流

一个盒模型的背景background的范围是?和border的位置关系是?

border是覆盖background的,即在背景上一层。

内容和边框的位置关系是?

内容在边框上一层。
所以,垂直于屏幕,从上到下依次是文字内容(内联子元素)、浮动元素、块级子元素、边框、背景。

解释浮动元素(浮动div,比如float:left;)为什么会高于块级子元素(正常div)?

当给一个div加上float:left;的属性时,它会脱离正常文档流,即垂直于屏幕浮动起来,比之前高一点,不再受正常文档流的约束。

2.用于定位的属性position及其取值

static

默认值,使得元素处于正常文档流中,一般不用写

relative

相对定位,元素会浮动起来,但是不脱离文档流,定位基准是自身
元素在文档流中的实际位置不会改变,只是显示位置会出现偏移

absolute

绝对定位,元素脱离文档流,定位基准是祖先元素里的非static

fixed

固定定位,定位基准是viewport

sticky

粘滞定位

一些经验

1.如果写了absolute,一般都要补上relative
2.如果写了absolute或者fixed,一定要补left和top
3.sticky兼容性很差,主要用于面试装杯

3.详解relative

第一种用法:用于作位移,用得极少

元素浮动起来,相对原位置可以有一个偏移,但是不脱离文档流,实际位置没有改变

position:relative;
left:10px;
top:10px;

元素相对原位置向右、向下移动了10px

第二种用法:用于给absolute做爸爸

先了解一下z-index的用法

z-index的默认值是auto,即不创建层叠上下文
z-index的取值可以是-2、-1、0、1、2等,数值大的元素会在垂直于屏幕方向覆盖住数值小的元素
学会管理z-index

4.详解absolute

使用场景(常用)

脱离原来的位置,另起一层,比如对话框的关闭按钮
鼠标提示

使用方法

相对定位的元素并未脱离文档流,而绝对定位的元素则脱离了文档流。在布置文档流中其它元素时,绝对定位元素不占据空间。绝对定位元素相对于最近的非 static 祖先元素定位。

5.详解fixed

定位基准是视口viewport

6. 层叠上下文

每个层叠上下文都是一个小世界
处在同一个小世界的z-index才能互相比较

哪些属性可以创建层叠上下文

z-index/flex/opacity/transform

什么是层叠上下文

如果一个元素被定位了,即position的值为relative/absolute/fixed/sticky,那么这个元素会处于文字内容的上面或者下面
定位元素的z-index的值为0/1/2...,该元素在垂直于屏幕方向处于文字内容上方; 定位元素的z-index的值为-1/-2/-3...,该元素在垂直于屏幕方向处于文字内容下方。