584 字
3 分钟
相对定位
2026-03-15
无标签

之前调整元素的位置只能使用margin,padding这些属性对其进行调整,例如元素的位置和周围的元素看起来高度不协调,一定是使用类似margin-top: 2px这样的方法去调整高度。但是这样必定会出现一个问题 — 如果存在父级元素,父级元素会受到这样移动的影响。如果想要达到移动的同时可以解决对父级元素的影响,相对定位一定是一个很好的解决方案。

概念#

相对定位的相对是相对于元素自己本身的位置,所以其原本的元素会继续保持在原本文档流的位置不动,只是显示的图片,文字等信息会进行位置的移动。

语法格式#

属性#

  • position:默认值是static,相对定位则是relative
  • top正值:相对于原有的上边框增加多少距离(向下移动);负值:相对于原有的上边框减少多少距离(向上移动);优先级高于bottom
  • left正值:相对于原有的左边框增加多少距离(向右移动);负值:相对于原有的左边框减少多少距离(向左移动);优先级高于right
  • bottom正值:相对于原有的下边框增加多少距离(向上移动);负值:相对于原有的下边框减少多少距离(向下移动)
  • right正值:相对于原有的右边框增加多少距离(向左移动);负值:相对于原有的右边框减少多少距离(向右移动)
  • z-index:层级顺序,层级顺序相同时,书写位置靠后的默认层级更高

格式#

.elements {
position: relative;
top: 10px;
left: 20px;
}

注:top和,left层级高,写法就以这两个属性来写,另外两种的属性皆可实现相同效果

案例#

我觉得对话框这样的一个案例是其中可以写的东西最多的,于是只使用了这一个

以下是源码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>对话框</title>
<style>
* {
margin: 0;
}
.tip {
width: 150px;
height: 80px;
border: 4px solid red;
border-radius: 6px;
margin: 50px auto;
}
.triangle {
width: 10px;
height: 10px;
border: 4px solid red;
position: relative;
left: 50%;
top: -10px;
transform: translate(-50%) rotate(45deg);
border-bottom: none;
border-right: none;
background-color: #fff;
}
</style>
</head>
<body>
<div class="tip">
<div class="triangle"></div>
</div>
</body>
</html>
相对定位
https://ivoinkwell.xyz/posts/web-frontend/css-relative-positioning/
作者
Ivo
发布于
2026-03-15
许可协议
CC BY-NC-SA 4.0