CSS position 属性
这个属性定义建立元素布局所用的定位机制,任何元素都可以定位,不过绝对和固定元素会生成一个块级,而不论元素本身是什么类型;
CSS 定位
值 | 描述 |
relative | 相对定位,相对于原来的位置,不脱离标准文档流 |
absolute | 绝对定位,脱离标准文档流,不保留原本的位置 |
fixed |
固定定位,相对于浏览器窗口进行定位 窗口滚动也不会移动 |
相对定位
相对定位元素的定位是相对其正常位置,可以移动的相对定位元素的内容和相互重叠的元素,它 原本所占的空间不会改变。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
position: relative;
top: 50px;
left: 50px;
width: 300px;
height: 300px;
background-color: pink;
}
.box1{
width: 200px;
height: 200px;
background-color: red;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="box1"></div>
</body>
</html>
绝对定位
无父级或者无父级无定位
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.father {
margin-top: 50px;
margin-left: 50px;
width: 500px;
height: 500px;
background-color: skyblue;
}
.son {
position: absolute;
top: 50px;
left: 50px;
width: 200px;
height: 200px;
background-color: pink;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
父级有定位
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.yeye{
position: relative;
width: 800px;
height: 800px;
background-color: hotpink;
padding: 50px;
}
.father{
width: 500px;
height: 500px;
background-color: skyblue;
}
.son{
position: absolute;
left: 30px;
bottom: 10px;
width: 200px;
height: 200px;
background-color: pink;
}
</style>
</head>
<body>
<div class="yeye">
<div class="father">
<div class="son"></div>
</div>
</div>
</body>
</html>
固定定位
即使滚动元素也不会改变位置;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.divA{
position: fixed;
top: 100px;
left: 40px;
background-color: pink;
}
</style>
</head>
<body>
<div class="divA">
<img src="img/1.webp">
</div>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
<p>这是一段文字</p><p>这是一段文字</p>
</body>
</html>
重叠的元素
元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素
z-index 属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)
一个元素可以有正数或负数的堆叠顺序:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
position: absolute;
top: 0;
left: 0;
}
.divA{
width: 200px;
height: 200px;
background-color: green;
z-index: 1;
}
.divB{
width: 200px;
height: 80px;
top: 100px;
z-index: 2;
background-color: skyblue;
}
.divC{
width: 200px;
height: 30px;
top: 130px;
z-index: 3;
background-color: pink;
}
</style>
</head>
<body>
<div class="divA">
</div>
<div class="divB">
</div>
<div class="divC">
</div>
</body>
</html>
注意
如果两个定位元素重叠,没有指定 z - index,最后定位在 HTML 代码中的元素将被显示在最前面。