前端中的定位体系

1.定位体系的意义

  定位体系帮助作者使文档更易理解,并不需要使用标记的手段达到布局的效果。

  格式化上下文决定了可视化格式模型中框的形式,定位体系布局决定了这些框在页面中如何布局。

2.分类:

  视觉格式化模型规定,定位体系一共有三种:常规流(normal flow)、浮动(float)、绝对定位(absolute positioned)。

  任何一个元素,必须属于其中一种定位体系。

3.常规流(Normal flow):

  是最常见的定位体系,所有元素默认状态下都是常规流定位。

  在这里,我们把它当作可以流动的(位置可变),有先后顺序(元素顺序加载)的体系。

4.浮动(float):

  相对于常规流来讲,它漂浮在常规流的上方。因为它不再处于文档流中,所以它不占据空间
  属性值可以是:”none”、”left”、”right”。

  1)盒子位置:

  • 左浮动的盒子向上向左排列
  • 右浮动的盒子向上向右排列
  • 浮动盒子的顶边不得高于上一个盒子的顶边
  • 若剩余空间无法放下浮动的盒子,则该盒子向下移动,直到具备足够的空间能容纳盒子,然后再向左或向右移动

  2)常规流盒子和浮动盒子混合摆放:

  • 浮动盒子在摆放时,要避开常规流盒子(分开用盒子装)
  • 常规流盒子在摆放时,无视浮动盒子
  • 常规流盒子的自动高度计算时,无视浮动盒子 —— 高度坍塌(这种情况可以使用清除浮动{clean:both},在浮动元素的下方设一个元素进行清除浮动)。

5、绝对定位(Absolute positioning):

  在绝对定位模型中,一个框(box)整个地从常规流向中脱离(它对后续的兄弟元素没有影响),并根据它的包含块来分配其位置。

1)static

  该框(box)是一个常规框,布局根据常规流。'left' 、’right’、’bottom’和 'top'属性不适用。
  如果 ‘position’没有设置,默认值也是’static’。这时,设置'left' 、’right’、’bottom’和 'top’,无效。

2)relative相对位置:

  框的位置根据常规流计算(被称为常规流中的位置)。然后框相对于它的常规位置而偏移。如果框 B 是相对定位的,其后框的定位计算并不考虑 B 的偏移。 table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, 和 table-caption 元素的 ‘position:relative’ 效果没有被定义。
  在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

示例:

 结果:

3)absolute绝对位置:

   元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。

   框的位置(可能还有它的尺寸)是由’left’,’right’,’top’和’bottom’特性决定。这些特性指定了框相对于它包含块的偏移量。 绝对定位(”position: absolute”)元素的包含块由离它最近的 ‘position’ 属性为 ‘absolute’、’relative’ 或者 ‘fixed’ 的祖先元素创建。绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。根据用户的代理不同,最初的包含快可能是画布或HTML元素。(即元素会一层一层往上找有position属性的父元素,并以他为相对位置调整(会影响下面盒子的位置),一般会在该盒子基础上设父元素盒子,设置relative属性,该盒子设absolute属性,一起嵌套使用,才能占位不影响其他盒子位置。)

   绝对定位的框从常规流向中脱离。这意味着它们对其后的兄弟元素的定位没有影响。另外,尽管绝对定位框有外边距(margin), 它们不会和其它任何外边距发生折叠(Collapsing margins)。
  因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

示例:

 

4)fixed固定位置:

  主要用于小广告和导航栏,定在一个固定位置,相对于 viewport 固定,滚动时不移动。

  跟绝对定位一样,fixed定位元素的margin不会和任何其他 margin发生margin折叠。

 

猜你喜欢

转载自www.cnblogs.com/xmbg/p/11487738.html