之前调整元素的位置只能使用margin,padding这些属性对其进行调整,例如元素的位置和周围的元素看起来高度不协调,一定是使用类似margin-top: 2px这样的方法去调整高度。但是这样必定会出现一个问题 — 如果存在父级元素,父级元素会受到这样移动的影响。如果想要达到移动的同时可以解决对父级元素的影响,相对定位一定是一个很好的解决方案。
概念
相对定位的相对是相对于元素自己本身的位置,所以其原本的元素会继续保持在原本文档流的位置不动,只是显示的图片,文字等信息会进行位置的移动。
语法格式
属性
position:默认值是static,相对定位则是relativetop:正值:相对于原有的上边框增加多少距离(向下移动);负值:相对于原有的上边框减少多少距离(向上移动);优先级高于bottomleft:正值:相对于原有的左边框增加多少距离(向右移动);负值:相对于原有的左边框减少多少距离(向左移动);优先级高于rightbottom:正值:相对于原有的下边框增加多少距离(向上移动);负值:相对于原有的下边框减少多少距离(向下移动)right:正值:相对于原有的右边框增加多少距离(向左移动);负值:相对于原有的右边框减少多少距离(向右移动)z-index:层级顺序,层级顺序相同时,书写位置靠后的默认层级更高
格式
css
.elements {
position: relative;
top: 10px;
left: 20px;
}注:top和,left层级高,写法就以这两个属性来写,另外两种的属性皆可实现相同效果
案例
我觉得对话框这样的一个案例是其中可以写的东西最多的,于是只使用了这一个
以下是源码:
html
<!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>