css定位

概述及相对定位

定位:
position:relative(相对)、absolute(绝对)、static(无定位)、fixed(固定)
相对定位:相对定位的偏移参考元素是元素本身,不会使元素脱离文档流。元素的初始位置占据的空间会被保留。

编程练习1

补全下列代码,使得蓝色区块覆盖红色区块 并且蓝色区块分别距离顶部和左边50px。

效果图如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
padding: 0;
margin: 0;
}
.blue{
width: 100px;
height: 100px;
background: blue;
/*在此处添加相应代码*/
position:relative;
top:50px;
left:50px;
}
.red{
width: 100px;
height: 100px;
background: red;
}
</style>
</head>
<body>
<div class="blue"></div>
<div class="red"></div>
</body>
</html>

绝对定位

绝对定位:相对于已定位的最近的祖先元素,如果没有已定位的最近的祖先元素,那么它的位置就相对与最初的包含块(如body)。
position:absolute;

相对定位relative的偏移参考元素是元素本身,不会使元素脱离文档流。元素的初始位置占据空间会被保留。绝对定位absolute会产生浮动效果,脱离文档流

设置了top和left属性之后必须设置position属性,不然不会生效

编程练习2

我们学习了position的绝对定位,那我们就运用绝对定位的知识来完成下列的要求,

要求:使div距离网页右边为200像素,距离底边为100像素 。

任务

1、我们要想给某个元素指定特定的位置,就需要用到绝对定位属性position:absolute;

2、给指定的元素设定完定位属性之后,我们先给指定属性设置距离右边200px;

3、给指定属性设置距离底部100px。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
padding: 0;
margin: 0;
}
.test{
width: 100px;
height: 100px;
background: red;
/*此处写代码*/
position:absolute;
right:200px;
bottom:100px;

}
</style>
</head>
<body>
<div class="test"></div>
</body>
</html>

编程练习3

学习了定位属性,下面我们来用定位的知识完成下列代码,使得蓝色方块位于红色方块的正中心。

效果图如下:

任务

1、要给设置绝对定位元素的父元素进行相对定位的设置。

2、给设置绝对定位的元素进行顶部和左边位置的设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
/*完善下列代码*/
.per{
width: 300px;
height: 300px;
background: red;
margin-left:200px;
margin-top: 200px;
position:relative;
top:0px;
left:0px;
}

.son{
width: 100px;
height: 100px;
background: blue;
position:absolute;
top:100px;
left:100px;
}
</style>
</head>
<body>
<div class="per">
<div class="son"></div>
</div>
</body>
</html>

绝对定位和浮动

float和absolute的异同:float不会忽略文字,文字会绕过float浮动的图;
absolute则会忽略文字,文字不会绕过absolute定位的图文,会掩盖文字。

两者都会脱离文档流

相对定位和浮动

相对定位可以和float一起用,float主要是文字不会背图片遮挡,relative不会脱离文档流,可以用relative来调整位置。然后absolute和float都是脱离文档流,absolute会遮挡文字

z-index的使用

z-index: 属性决定谁在前谁在后,越大越靠上显示 用来改变层叠顺序

编程练习4

利用课程讲解z-index的知识,设置两个div元素的叠加

任务

任务提示

1、分别定义两个div的高度和宽度相同

2、对两个div设定偏移

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
<style type="text/css">
#one{
width: 100px;
height: 100px;
background: red;
/* 请在此添加代码*/
position:relative;
top:70px;
z-index:20;

}
#two{
width: 100px;
height: 100px;
background: green;
/* 请在此添加代码*/
position:relative;
left:20px;
z-index:10;
}
</style>
</head>

<body>
<div id="one">

</div>
<div id="two">

</div>
</body>
</html>

固定定位

固定定位,相对与浏览器窗口进行定位
position:fixed;

编程练习5

我们学习了CSS中的定位,那么现在我们来运用定位的知识来实现网页中常见的对联广告吧。

要求:无论页面怎么移动,页面左右的的广告栏不会发生位置的变化。

效果如下图所示:

任务

1、首先我们需要添加一个块元素,并且以慕课网为背景,模拟整个网页,并给块元素设置足够的宽高。

2、在网页中添加两个块元素,分别为对联广告中的左侧广告块和对联广告的右侧广告块

​ 并且给对联块设置宽高

3、我们需要给对联左右块元素添加固定定位属性

4、使得对联左右块元素相对于窗口垂直居中

任务提示

背景图片:

http://climg.mukewang.com/59c9f7ce0001839219034033.png

http://climg.mukewang.com/5a3383c70001f1b702240364.png

http://climg.mukewang.com/5a3383d00001a3dd02240364.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
.main{
background-image: url("http://climg.mukewang.com/59c9f7ce0001839219034033.png");
width:1500px;
height:4033px;
margin-top:0px;
margin-right:0px;
margin-bottom:0px;
margin-left:0px;
background-repeat:no-repeat;
background-position:top;

}
.div1{
position: fixed;
right: 0px;
top: 20%;
}
.div2{
position: fixed;
left: 0px;
top: 20%;
}
</style>
</head>
<body>
<div class="main">
<div class="div1">
<img src="http://climg.mukewang.com/5a3383c70001f1b702240364.png">
</div>
<div class="div2">
<img src="http://climg.mukewang.com/5a3383d00001a3dd02240364.png">
</div>
</div>

</body>
</html>
-------------本文结束感谢您的阅读-------------