定位

1 定位的概念

1) 除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 HTML 中的位置决定。

2) 定位的基本思想很简单,它允许你定义元素相对于其正常位置应该出现的位置,或者相对于父元素甚至浏览器窗口本身的位置。

3) 通过使用 position 属性,我们可以选择 4 种不同类型的定位。

  • position属性是把元素放置到一个静态的、相对的、绝对的、或固定的位置中。

  • position属性的四个值分别对应 static、relative、absolute、fixed。

2 相对定位

  • 使用相对定位的盒子,会相对于它原来的位置,通过偏移指定的距离,到达新的位置
  • 使用相对定位的盒子,仍在标准流中,它对父块好兄弟盒子没有任何影响
.box {
    position: relative;
    top: 10px;
    left: 20px;
}

相对定位

注意:

相对定位可以和浮动一起使用。

3 绝对定位

  • 使用绝对定位的盒子以它"最近"的一个"已经定位"的"祖先元素"为基准进行偏移. 如果没有已经定位的"祖先元素", 那么会以根元素 html 为基准进行定位。
  • 绝对定位的框从标准流中脱离,这意味着它们对其后的兄弟盒子的定位没有影响,其他的盒子就好像这个盒子不存在一样
.box {
    position: absolute;
    top: 10px;
    left: 20px
}

绝对定位

注意:

绝对定位的元素无法再设置浮动。

关于包含块:

绝对定位的元素其实是以他的包含块元素为基准进行定位的,但是元素 position 设置的不同,其包含块也会引起变化。

1) 如果一个元素自身的 position 属性是 static或者是relative:它的包含块就是离他最近的祖先元素或者是格式化上下文。

2) 如果一个元素自身的 position 属性是absolute,它的包含块就是离他最近的拥有定位属性(值不为static)的元素。

3) 如果一个元素自身的 position 属性是 fixed,它的包含块就是离他最近的拥有定位属性(值不为static)的元素。

4) 如果由内向外找不到包含块条件的元素,那么html(根元素)被称作为初始包含块。

3 固定定位

  • 以视口(viewport)为基准进行定位

  • 窗口滚动时,依然保持位置不变

.box {
    position: fixed;
    top: 10px;
    left: 20px;
}

4 空间位置 z-index

4.1 z-index 属性

  • 指定一个定位的元素及其后代的层叠顺序,只有定位元素(非static值)设置 z-index 才可以生效。
  • z-index的值是数字,没有单位, 理论上来说 z-index的值大的元素会覆盖小的元素;z-index 的默认值是 auto。

4.2 z-index 注意事项

如果一个设置了 z-index 属性的定位元素中的子元素也设置了z-index,那么子元素会重新创建一个层叠上下文,子元素的 z-index 只能在当前的层叠上下文中对比排列。

4.3 元素的层叠顺序

层叠顺序

5 定位相关CSS属性总结

  • position 设置定位。值: static(默认值) / relative / position / fixed。
  • top 设置定位元素位置。
  • left 设置定位元素位置
  • right 设置定位元素位置
  • bottom 设置定位元素位置。
  • z-index 设置定位元素层级。值:auto(默认值) / 数字。

results matching ""

    No results matching ""