css之定位 position

我是研究僧i 提交于 2020-03-10 16:39:20

什么是定位?!定位是一种更加高级的布局手段,通过定位可以将元素摆放到页面的任意位置。

position 属性设置

可选值:

  • static 默认值,元素是静止的没有开启定位
  • relative 开启元素的相对定位
  • absolute 开启元素的绝对定位
  • fixed 开启元素的固定定位
  • sticky 开启元素的粘滞定位



1、相对定位:

特点:

  1. 元素开启定位后不设置偏移量不会发生任何变化。
  2. 是相对于元素在文档流中的位置进行定位的。
  3. 可以提升层级,也就是可以盖住别的元素。
  4. 不会脱离文档流,也就相当于灵魂出窍,肉身还在。
  5. 不会改变元素的性质,块还是块,行内还是行内。

偏移量:

  • top 定位元素和定位位置上边的距离
  • bottom 定位元素和定位位置下边的距离
  • left 定位元素和定位位置左边的距离
  • right 定位元素和定位位置右边的距离



2、绝对定位:

特点:

  1. 不设置偏移量位置还是不变。
  2. 但是,开启绝对定位后元素脱离文档流。(脱离文档流有什么特点,写在了浮动那一块了,总的来说就是不再区分块和行,宽高被内容撑开)
  3. 元素会提升一个层级。
  4. 相对于包含块定位。(绝对定位的包含块是离他最近的开启了定位的祖先元素,但要是祖先元素都没开启定位,则根元素html是它的包含块)



3、固定定位:

固定定位也是一种绝对定位,所以固定定位的大部分特点和绝对定位一样,唯一不同的是固定定位永远是相对于浏览器视口进行定位的。(固定定位的元素不会随网页的滚动条滚动,可恶的广告就是这么来的,死死卡住一个位置)



4、粘滞定位

粘滞定位和相对定位的特点基本一致,不同的是粘滞定位可以在元素到达某个位置时将其固定。



补充:

1、绝对定位元素的位置

水平方向有过度约束:

  • left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含块的内容区的宽度
  • 如果9个值中没有 auto 则自动调整 right 值以使等式满足,如果有 auto,则自动调整 auto 的值以使等式满足。

垂直方向有过度约束:

  • top + margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom + bottom = 包含块的内容区的高度

  • 如果9个值中没有 auto 则自动调整 bottom 值以使等式满足,如果有 auto,则自动调整 auto 的值以使等式满足。

2、元素的层级(z-index)

  1. 对于开启了定位的元素,可以通过 z-index 属性来指定元素的层级,z-index 需要一个整数作为参数,值越大元素的层级越高,越优先显示。

  2. 层级一样,则优先显示靠下的元素。

  3. 祖先元素层级再高,也不会盖住后代元素。

    .box{
     Z-index: 3;
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!