1.定位的简介和相对定位
<!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>
body{
font-size: 60px;
}
.box1{
width: 200px;
height: 200px;
background-color: palegreen;
}
.box2{
width: 200px;
height: 200px;
background-color: rgb(243, 82, 8);
/* 定位
-定位是一种更加高级的布局手段
-通过定位可以将一个元素摆放到页面的任意位置
-使用position属性来设置定位
可选值:
static 默认值,元素禁止,未开启定位
relative 开启元素的相对定位
absolute 开启元素的绝对定位
fixed 开启元素的固定定位
sticky 开启元素的粘滞定位
相对定位:将position设置为relative,设置相对定位一定要设置偏移量(偏移量就是确定元素的位置)
top bottom left right
top是顶上的距离,其他类似*/
position: relative;
left: 200px;
top: -200px;
}
.box3{
width: 200px;
height: 200px;
background-color: rgb(13, 65, 236);
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
</body>
</html>
2.绝对定位
<!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>
body{
font-size: 60px;
}
.box1{
width: 200px;
height: 200px;
background-color: palegreen;
}
.box2{
width: 200px;
height: 200px;
background-color: rgb(243, 82, 8);
/*
绝对定位:将position设置为absolute
特点:1.开启绝对定位后,如果不设置偏移量,元素位置不会发生变化
2.开启绝对定位后,元素会从文档流中脱离
3.绝对定位会改变元素的性质,行内变成块,块的宽度被内容撑开
4.绝对定位会使元素提升一个层级
5.绝对定位元素是相对于其包含块进行定位
包含块:
-正常情况下就是离当前元素最近的祖先块元素
-开启绝对定位的情况下,就是离他最近的开启了定位的祖先元素
如果所有的祖先元素都没有开启定位则根元素就是他的包含块
*/
position: absolute;
left: 0;
top: 0;
}
.box3{
width: 200px;
height: 200px;
background-color: rgb(13, 65, 236);
}
.box4{
width: 400px;
height: 400px;
background-color: paleturquoise;
/* position: relative; */
}
.box5{
width: 300px;
height: 300px;
background-color: yellow;
/* position: relative; */
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box4">4
<div class="box5">5
<div class="box2">2
</div>
</div>
</div>
<div class="box3">3</div>
</body>
</html>
3.固定定位
<!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>
body{
font-size: 60px;
height: 2000px;
}
.box1{
width: 200px;
height: 200px;
background-color: palegreen;
}
.box2{
width: 200px;
height: 200px;
background-color: rgb(243, 82, 8);
/*
固定定位:将position设置为fixed
固定定位也是一种绝对定位,特点基本一样
唯一不同的是固定定位永远参照于浏览器的视口进行定位(固定在一个位置)
固定定位的元素不会随着网页的滚动条滚动
*/
position: fixed;
left: 0;
top: 0;
}
.box3{
width: 200px;
height: 200px;
background-color: rgb(13, 65, 236);
}
.box4{
width: 400px;
height: 400px;
background-color: paleturquoise;
}
.box5{
width: 300px;
height: 300px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box4">4
<div class="box5">5
<div class="box2">2
</div>
</div>
</div>
<div class="box3">3</div>
</body>
</html>
4.粘滞定位
<!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>
body{
font-size: 60px;
height: 2000px;
}
.box1{
width: 200px;
height: 200px;
background-color: palegreen;
}
.box2{
width: 200px;
height: 200px;
background-color: rgb(243, 82, 8);
/*
粘滞定位:将position设置为sticky
粘滞定位可以在元素到达某个位置时将其固定不动
*/
position: sticky;
top: 0px;
}
.box3{
width: 200px;
height: 200px;
background-color: rgb(13, 65, 236);
}
.box4{
width: 400px;
height: 400px;
background-color: paleturquoise;
}
.box5{
width: 300px;
height: 300px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box4">4
<div class="box5">5
</div>
</div>
<div class="box2">2</div>
<div class="box3">3</div>
</body>
</html>
5.绝对定位元素的布局
<!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>
.box1{
width: 500px;
height: 500px;
background-color: chartreuse;
position: relative;
}
.box2{
width: 100px;
height: 100px;
background-color: orange;
position: absolute;
margin: auto;
/* 当我们开启了绝对定位后:
水平方向的布局等式就需要添加left right
此时规则和之前的一样
当发生过度约束时,如果9个值中没有auto则自动调整为right值以使等式满足
如果有auto,则自动调整auto的值使等式满足*/
left: 0;
right: 0;
top: 0;
bottom: 0;
}
</style>
</head>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
</html>
6.元素的层级
<!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>
body{
font-size: 60px;
}
.box1{
width: 200px;
height: 200px;
background-color: palegreen;
position: absolute;
/* 对于开启定位元素,可以通过z-index属性来指定元素层级
z-index需要一个整数作为参数,值越大,元素的层级越高
元素的层级越高,越优先显示
祖先元素的层级在高,也不会盖住后代元素*/
z-index: 1;
}
.box2{
width: 200px;
height: 200px;
background-color: rgba(255, 0, 0,.3);
position: absolute;
top: 50px;
left: 50px;
}
.box3{
width: 200px;
height: 200px;
background-color: rgb(13, 65, 236);
position: absolute;
top: 100px;
left: 100px;
z-index: 3;
}
.box4{
width: 100px;
height: 100px;
background-color: rgb(248, 135, 6);
position: absolute;
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3
<div class="box4">4</div>
</div>
</body>
</html>