相对定位/绝对定位/固定定位/粘滞定位

a 夏天 提交于 2020-02-26 12:48:20

1.定位的概念:
定位是一种更加高级的布局手段,通过定位可以将元素摆放到页面的任意位置,使用position属性来设置定位。
可选值:
static 默认值,元素是静止的没有开启定位
relative 开启元素的相对定位
absolute 开启元素的绝对定位
fixed 开启元素的固定定位
sticky 开启元素的粘滞定位
2.偏移量的概念:
当元素开启了定位以后,可以通过偏移量来设置元素的位置。
top: 定位元素和定位位置上边的距离(top值越大,定位元素越向下移动)
bottom: 定位元素和定位位置下边的距离(bottom值越大,定位元素越向上移动)
定位元素垂直方向的位置由top和bottom两个属性来控制
left:定位元素和定位位置的左侧距离(left越大元素越靠右)
right:定位元素和定位位置的右侧距离

  • 定位元素水平方向的位置由left和right两个属性控制( right越大元素越靠左),通常我们使用元素的top和left值去定位元素的位置。
    
  • 注意和margin的区别:1.margin-top会改变页面布局;而top会覆盖元素,不会改变页面的布局。2.四个方向的偏移都是移动自身,而不会跟margin-bottom/right一样是其他元素在移动
    3.相对定位:
    position:relative开启了元素的相对定位
    3.1当开启元素的相对定位之后,不设置偏移量就不会发生任何的变化,所以通过偏移量(left/right/top/bottom)设置元素的位置(什么时候移动?)
    3.2相对定位是相对于元素自身(元素移动之前的位置)移动的(按怎样的规则移动?)
    3.3相对定位会提升元素的层级(高于文档流),会覆盖其他的元素。(有什么样的效果?)
    3.4相对定位不会脱离文档流(不会影响其他元素),灵魂走了肉体还在,相对定位不会改变元素的性质,块元素还是块元素,行内还是行内。(性质和特点?)
    4.绝对定位:
    position:absolute开启了元素的绝对定位
    4.1当开启元素的绝对定位之后,元素已脱离文档流,不设置偏移量就不会移动,所以通过偏移量(left/right/top/bottom)设置元素的位置(什么时候移动?)
    4.2绝对定位是相当于其包含块定位的,绝对定位的包含块就是离它最近的开启了定位(position不是static)的祖先元素移动的,如果所有的祖先元素都没有开启定位则根元素就是它的包含块,一层一层的往上走。
    • html(根元素、也称初始包含块)(按怎样的规则移动?)
      包含块( containing block )
    • 正常情况下:
      包含块就是离当前元素最近的祖先块元素
      在这里插入图片描述
    • 绝对定位的包含块:
      包含块就是离它最近的开启了定位的祖先元素(position不是static),如果所有的祖先元素都没有开启定位则根元素就是它的包含块。

4.3绝对定位会提升元素的层级(高于文档流),脱离文档流。(有什么样的效果?)
4.4绝对定位会脱离文档流(会影响其他元素),绝对定位会改变元素的性质,块元素还是行内块元素,行内元素可以设置宽高。(性质和特点?)
5.固定定位
position:fixed开启了元素的固定定位
固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样, 唯一不同的是固定定位的包含块是视口,永远参照于浏览器的视口(固定不动的可视框的大小)进行定位,所以固定定位的元素不会随网页的滚动条滚动,相对于可视区域滚动的,可视区域不会变化的。
可通过: left:0; top:0来 查看偏移的原点位置。
6.粘滞定位
position:sticky时则开启了元素的粘滞定位
- 粘滞定位和相对定位的特点基本一致,
不同的是粘滞定位可以在元素到达某个位置时(通过偏移设置)将其固定,其包含块是body,但是由于是新的属性,兼容性不好

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