CSS-静态定位,相对定位,绝对定位,固定定位的用法和区别详解

小灰灰 2023-06-03 02:53 126阅读 0赞

CSS 提供了三种基本的定位机制:普通流、浮动和定位;通过这三种方式可实现页面的排版布局

普通流、浮动、定位

  • 普通流

    • 普通流中的元素的位置由元素在 (X)HTML 中的位置决定
    • 块级元素独自占一行,在文本流中从上到下一个接一个地排列
    • 行内元素在一行中并排排列,遇到父元素的边沿会换行继续排列
  • 浮动

    • 浮动会让元素脱离标准文档流,不再占原来的空间,可以让多个块级元素并排显示
  • 定位

    • 定位是将元素定在某个位置,定位的元素的层级要高于浮动元素
    • 通过定位可以让元素相对于其正常位置进行偏移出现在别的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置
    • 定位可以将元素放置在页面中的任何位置,这是标准文档流和浮动无法实现的

CSS 通过 position 属性设置定位方式,其对应的属性值如下:


























属性值 作用
static 静态定位,默认的定位方式
relative 相对定位
absolute 绝对定位
fixed 固定定位

绝对定位和固定定位会改变元素的 display 属性,默认将元素转为 行内块元素

static 静态定位

  • 按照标准文档流的规则来放置元素,基本不用

relative 相对定位

  • 相对于自己在标准文档流中的位置进行定位;原来的位置仍占有空间

relative 绝对定位

  • 通过设置了定位的父级元素或祖先元素来进行定位
  • 如果父元素或祖先元素没有定位则相对于页面文档进行定位
  • 绝对定位的元素脱离标准文档流,不再占有原来的位置
  • 使用绝对定位的元素父元素一般设置为相对定位

absolute 固定定位

  • 相对于浏览器可视窗口进行定位,位置与父元素无关
  • 会将元素固定在窗口的某个位置不随页面的滚动而改变

想实现元素的定位,只设置定位方式还是不够的,需要结合 CSS 中的方位属性来实现定位


























属性 作用
left 定位元素左外边距边界与其父元素左边界之间的偏移(元素的左边缘与参照元素位置间的距离)
right 右边缘
top 上边缘
bottom 下边缘

属性值可以是 px、cm、% 等;使用时一般是 水平方向的属性(left、right)与垂直方向的属性(top、bottom)结合使用;top 与 bottom 不要同时使用,left 与 right 不要同时使用

相对定位示例:
  1. /* 父元素 */
  2. .parent {
  3. width: 400px;
  4. height: 400px;
  5. border: 1px solid gray;
  6. }
  7. /* 两个子元素 */
  8. .box1, .box2 {
  9. width: 200px;
  10. height: 200px;
  11. }
  12. .box1 {
  13. /* 设置相对定位 */
  14. position: relative;
  15. /* 相对元素原来的位置距离上边缘 50px */
  16. top: 50px;
  17. /* 相对于原来的位置距左边缘 100px */
  18. left: 100px;
  19. background-color: green;
  20. }
  21. .box2 {
  22. background-color: blue;
  23. }
  24. <div class="parent">
  25. <div class="box1"></div>
  26. <div class="box2"></div>
  27. </div>

在这里插入图片描述

绝对定位示例:
  1. /* 父元素 */
  2. .parent {
  3. width: 400px;
  4. height: 400px;
  5. /* 父元素设置相对定位 */
  6. position: relative;
  7. border: 1px solid gray;
  8. }
  9. /* 两个子元素 */
  10. .box1, .box2 {
  11. width: 200px;
  12. height: 200px;
  13. }
  14. .box1 {
  15. background-color: red;
  16. }
  17. .box2 {
  18. /* 设置绝对定位 */
  19. position: absolute;
  20. /* 距离父元素上边缘 50px */
  21. top: 50px;
  22. /* 距离父元素左边缘 100px */
  23. left: 100px;
  24. background-color: purple;
  25. }
  26. <div class="parent">
  27. <div class="box1"></div>
  28. <div class="box2"></div>
  29. </div>

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,126人围观)

还没有评论,来说两句吧...

相关阅读