HTML + CSS 连载 | 45 - 相对定位

一、相对定位

元素按照标准流布局,可以通过 top/right/bottom/left 四个位移属性进行定位,定位的参照对象是元素原来自己的位置,

top/right/bottom/left 用来设置元素的具体位置,对元素的作用如下图所示:

偏移 解释
right 定义了定位元素右外边距边界与其包含块右边界之间的偏移。
top 定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。
bottom 定义了定位元素下外边距边界与其包含块下边界之间的偏移。
left 定义了定位元素左外边距边界与其包含块左边界之间的偏移。

相对定位的使用场景是在不影响其他元素位置的前提下,对当前元素位置进行微调

创建 HTML 页面,先设置三个上中下排列的盒子,并使他们居中显示,具体 HTML 代码如下所示:

HTML 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .container {
      width: 100px;
      height: 300px;
      margin: 0 auto;
    }

    .box {
      width: 100px;
      height: 100px;
    }

    .box1 {
      background-color: #f00;
    }

    .box2 {
      background-color: #f0f;
    }

    .box3 {
      background-color: #f00;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="box box1"></div>
    <div class="box box2"></div>
    <div class="box box3"></div>
  </div>
</body>
</html>

在浏览器中打开 HTML 页面,效果如下:

接下来我们就可以对中间的盒子进行位置的调整,使用相对定位进行位置调整时,使用top/right/bottom/left设置位移量时参考的是元素原来的位置,比如我们可以设置元素距离原来左外边距为 100px,修改 .box2 选择器的 CSS 代码:

CSS 复制代码
.box2 {
  background-color: #f0f;
  position: relative;
  left: 100px;
}

刷新 HTML 页面,效果如下:

其他元素的位置没有收到影响,只是相对于距离原来自己的位置进行了右移了 100px,也就是距离原来自己位置的左外边距为100px。

还可以设置距离上外边距的距离,具体 CSS 代码如下所示:

CSS 复制代码
.box2 {
  background-color: #f0f;
  position: relative;
  left: 100px;
  top: 100px;
}

刷新页面,效果如下:

可以看到中间盒子分别向右和向下移动了 100px,也就是说距原来位置的上外边距和左外边距的距离为 100px。

top/right/bottom/left 同时也支持负数和百分数的设置,如果设置为负数,就是向属性名的同方向移动,比如设置如下 CSS 代码:

CSS 复制代码
.box2 {
  background-color: #f0f;
  position: relative;
  left: -100px;
  top: -100px;
}

刷新页面,效果如下:

可以看到中间的盒子向左向上移动了 100px。

相对定位的特点

相对定位具有如下的特点:

  • 相对定位的元素不会脱离文档流,元素位置的变化只是视觉上的效果变化,不会对其他元素产生任何影响,定位元素标准流中的位置依然会保留,其他非定位元素保持不变。
  • 定位元素的显示层级比普通元素高,所有的定位,显示层级都一样;也就是说定位元素会覆盖在普通元素上,同定位元素之间设置显示层级可以使用 z-index 来设置优先级。
  • left 不能和 right 一起设置;topbottom不能一起设置。
  • 相对定位的元素也能继续浮动,但不推荐。
  • 相对定位的元素也能通过 margin 调整位置,但不推荐。
  • 绝大多数情况下相对定位会与绝对定位配合使用。
相关推荐
lina_mua13 分钟前
Cursor模型选择完全指南:为前端开发找到最佳AI助手
java·前端·人工智能·编辑器·visual studio
董世昌4124 分钟前
null和undefined的区别是什么?
java·前端·javascript
软弹30 分钟前
Vue2 的数据响应式原理&&给实例新增响应式属性
前端·javascript·vue.js
浅水壁虎31 分钟前
任务调度——XXLJOB3(执行器)
java·服务器·前端·spring boot
晨欣35 分钟前
pnpm vs npm 命令对照表
前端·npm·node.js
小二·42 分钟前
Python Web 开发进阶实战:AI 智能体操作系统 —— 在 Flask + Vue 中构建多智能体协作与自主决策平台
前端·人工智能·python
Knight_AL1 小时前
Flink 状态管理详细总结:State 分类、Keyed State 实战、Operator State、TTL、状态后端选型
前端·数据库·flink
无心水1 小时前
17、Go协程通关秘籍:主协程等待+多协程顺序执行实战解析
开发语言·前端·后端·算法·golang·go·2025博客之星评选投票
【赫兹威客】浩哥2 小时前
【赫兹威客】框架模板-前端命令行部署教程
前端·vue.js
小妖6662 小时前
javascript 舍去小数(截断小数)取整方法
开发语言·前端·javascript