作者:yovan | 来源:互联网 | 2023-09-05 07:21
定位:将盒子定在某一个位置,所以定位也是在摆盒子,按照定位的方式移动盒子。
定位 = 定位模式 + 变偏移(通过top、bottom、left 、right设置)
定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。
一、静态定位(static)
- HTML 元素默认情况下的定位方式为 static(静态)
- 静态定位的元素不受 top、bottom、left 和 right
- 属性的影响 始终根据页面的正常流进行定位
- 示例1:
// html 部分代码
// css部分代码.border2 div{border: 1px solid saddlebrown;background-color: antiquewhite;height: 50px;width: 50px;text-align: center;line-height: 50px;}
效果图:
二、相对定位(relative)
- 设置相对定位的元素的 top、right、bottom 和 left 属性将导致其偏离其正常位置进行调整。(参考位置为自身未定位时的位置)
- 不会对其余内容进行调整来适应元素留下的任何空间。(不影响其它元素)
- 示例2: 在示例1的基础下添加代码,使第一个div相对定位
.border2 div:first-child{position: relative;left: 30px;top:10px;}
三、固定定位(fixed)
- 适用固定定位的元素是相对于视口定位的(即使滚动页面,它也始终位于同一位置)
- top、right、bottom 和 left 属性用于定位此元素。
- 示例3:
// html 部分代码
// css部分代码.divbox div:nth-child(1){border: 1px solid red;background-color: aquamarine;position: fixed;width: 100px;height:100px;right: 10px;bottom: 100px;}.divbox div:nth-child(2){border: 1px solid red;background-color: gold;height: 100vh;width: 100%;}
四、绝对定位(absolute)
- position: absolute; 的元素相对于最近的定位祖先元素进行定位
- 如果绝对定位的元素没有祖先,它将使用文档主体(body),并随页面滚动一起移动。
- 绝对定位后,定位元素不占空间(正常流中忽略绝对定位元素)
- 示例4:在示例2的基础上添加代码,让第三个div绝对定位
.border2 div:nth-child(3){position: absolute;left: 30px;top:10px;}
五、粘性定位(sticky)
-
position: sticky; 的元素根据用户的滚动位置进行定位。
-
起先它会被相对定位,直到在视口中遇到给定的偏移位置为止 - 然后将其“粘贴”在适当的位置(比如 position:fixed)。
-
Internet Explorer、Edge 15 以及更早的版本不支持粘性定位。 Safari 需要 -webkit- 前缀(请参见下面的实例)。您还必须至少指定 top、right、bottom 或 left 之一,以便粘性定位起作用。
-
示例4:
div.sticky {position: -webkit-sticky; /* Safari */position: sticky;top: 0;background-color: green;border: 2px solid #4CAF50;}
在此例中,在到达其滚动位置时,sticky 元素将停留在页面顶部(top: 0)。
五、定位属性(top、bottom、left 和 right)的使用
一般情况下同一个元素使用top或bottom、left或right
六、定位属性z-index 的使用
- 元素定位导致,元素与元素重叠,可使用z-index改变重叠顺序
- z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
- 取值范围(-2147483584 ~ 2147483584 )参考 CSS: z-index 取值范围
七、定位属性clip 使用
clip 属性剪裁绝对定位元素。rect (top, right, bottom, left)
img{position:absolute;clip:rect(0px,60px,200px,0px);}
参考 css定位:为什么需要定位