CSS布局之定位 详解(相对定位、绝对定位、子绝父相、固定定位)

本文介绍了CSS布局中的定位概念,包括静态、相对、绝对和固定定位的原理和使用方法。相对定位允许元素相对于自身移动,而绝对定位则相对于最近的定位祖先元素。子绝父相是一种常见的布局技巧,让子元素相对于父元素自由移动,常用于居中布局。固定定位使元素固定在屏幕某个位置。此外,文章还讨论了元素的层级关系和如何使用z-index调整定位元素的堆叠顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS布局:定位

1.定位的基本介绍

1.1网页常见布局方式

  • 标准流
    • 块级元素独占一行→垂直布局
    • 行内元素/行内块元素一行显示多个→水平布局
  • 浮动
    • 可以让原本垂直布局的块级元素变成水平布局
  • 定位
    • 可以让元素自由的摆放在网页的任意位置
    • 一般用于盒子之间的层叠情况

1.2定位的常见应用场景

  • 可以解决盒子与盒子之间的层叠问题:定位之后的元素层级最高,可以层叠在其他盒子上面

  • 可以让盒子始终固定在屏幕中的某个位置

2.定位的基本使用
  • 使用定位的步骤

    • 1.设置定位方式

      • 属性名:position
      • 常见属性值:
      定位方式属性值
      静态定位static
      相对定位relative
      绝对定位absolute
      固定定位fixed
    • 2.设置偏移值

      • 偏移值设置分为两个方向,水平和垂直方向各选一个使用即可
      • 选取的原则一般是就近原则 (离哪边近用哪个)
      方向属性名属性值含义
      水平left数字+px距离左边的距离
      水平right数字+px距离右边的距离
      垂直top数字+px距离上边的距离
      垂直bottom数字+px距离下边的距离
3.静态定位
  • 介绍:静态定位是默认值,就是之前认识的标准流。
  • 代码: position:static;
  • 注意点:
    • 静态定位就是之前标准流,不能通过方位属性进行移动
    • 之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定
4.相对定位
  • 介绍:自恋型定位,相对于自己之前的位置进行移动
  • 代码: position:relative;
  • 特点:
    • 需要配合方位属性实现移动
    • 相对于自己原来位置进行移动
    • 在页面中占位置 → 没有脱标
  • 应用场景:
    • 配合绝对定位组CP(子绝父相)
    • 用于小范围的移动
5.绝对定位
  • 介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动

  • 代码: position:absolute;

  • 特点:

    • 需要配合方位属性实现移动
    • 默认相对于浏览器可视区域进行移动
    • 在页面中不占位置 → 已经脱标
  • 应用场景:

    • 配合绝对定位组CP(子绝父相)
  • 绝对定位相对于谁移动?

    • 祖先元素中没有定位 → 默认相对于浏览器进行移动
    • 祖先元素中有定位 → 相对于 最近的 有定位 的祖先元素进行移动
6.子绝父相
  • 场景:让子元素相对于父元素进行自由移动
  • 含义:
    • 子元素:绝对定位
    • 父元素:相对定位
  • 子绝父相好处:
    • 父元素是相对定位,则对网页布局影响最小
  • 子绝父绝特殊场景
  • 场景:在使用子绝父相的时候,发现父元素已经有绝对定位了,此时直接子绝即可!
  • 原因: 父元素已经有定位已经满足要求,如果盲目修改父元素定位方式,可能会影响之前写好的布局
  • (例)子绝父相水平居中案例
    • 子绝父相
    • 先让子盒子往右移动父盒子的一半:left:50% ;
    • 再让子盒子往左移动自己的一半
      • 普通做法:margin-left:负的子盒子宽度的一半
      • 缺点:子盒子宽度变化后需要重新改代码
      • 优化做法:transform:translateX(-50%)
      • 优点:表示沿着X轴负方向(往左)始终移动自己宽度的一半,子盒子宽度变化不需要更改代码
  • (例)子绝父相水平垂直都居中案例
    • 子绝父相
    • 让子盒子往右走大盒子一半:left:50%;
    • 让子盒子往下走大盒子一半:top:50%;
    • 让子盒子往左+往上走自己的一半:transform:translate(-50%,-50%);
7.固定定位
  • 介绍:相对于浏览器进行定位移动

  • 代码: position:fixed;

  • 特点:

    • 需要配合方位属性实现移动
    • 相对于浏览器可视区域进行移动
    • 在页面中不占位置 → 已经脱标
  • 应用场景: 让盒子固定在屏幕中的某个位置

  • 不同定位方式特点总结:

    定位方式属性值相对于谁移动是否占位置
    静态定位static不能通过方位属性移动占位置
    相对定位relative相对于自己原来的位置占位置
    绝对定位absolute相对于最近的且有定位的祖父元素移动不占位置(脱标)
    固定定位fixed相对于浏览器可视区域不占位置(脱标)
8.元素的层级关系

8.1 元素层级问题

  • 不同布局方式元素的层级关系: 标准流 < 浮动 < 定位
  • 不同定位之间的层级关系:
    • 相对、绝对、固定默认层级相同
    • 此时HTML中写在下面的元素层级更高,会覆盖上面的元素

8.2 更改定位元素的层级

  • 场景:改变定位元素的层级
  • 属性名:z-index:
  • 属性值:数字 —数字越大,层级越高
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值