整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS定位 实操代码掌握固定定位、绝对定位与相对定位子绝父相

定定位

position:fixed;

用我自己的话来说,就是让你想要固定的东西固定。例如:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			
			body{
				height: 2000px;
				
			}
			
			.photo{
				width: 600px;
				height: 600px;
				position: fixed;
				left: calc(50%-300px);
				top: calc(50%-300px);
				
			}
		</style>
		
	</head>
	<body>
		10月7日,昆凌在社交平台晒出自己荡秋千的美照。
		照片中,昆凌长发披肩,头戴假日风草帽,
		穿一袭白裙在海边荡着秋千,回眸甜笑,宛若仙子。
		<div id="box1">
			<img src="img/kunling.jpg" class="photo">
		</div>
		
	</body>
</html>



对了,在这里说一下,我目前是在职web前端开发,如果你现在正在学习前端,了解前端,渴望成为一名合格的web前端开发工程师,在入门学习前端的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,都可以随时关注并私信我:前端,我都会根据大家的问题给出针对性的建议,缺乏基础入门的视频教程也可以直接来找我,我这边有最新的web前端基础精讲视频教程, 还有我做web前端技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,都可以直接分享给大家。


当我下拉时,图片的位置是不会动的。即使下滑到了最底部,图片的位置也是固定的。对比下面这张图:


绝对定位和相对定位

子绝父相

子绝父相就是指子元素设置绝对定位,而父元素设置相对定位。换句话说:如果要对一个子元素使用定位的话,让子元素(绝对定位)以其父元素(相对定位)为标准来定位。

实操代码理解

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#father{
				width: 300px;
				height: 300px;
				background-color: coral;
				position: relative;
				border: solid 3px red;
			}
			
			#son1{
				width: 100px;
				height: 100px;
				background-color: aqua;
				position: absolute;
				left: 20px;
				top: 50px;
			}
			
			#son2{
				width: 100px;
				height: 100px;
				background-color: chartreuse;
				position: absolute;
				left: 40px;
				top: 90px;
			}
		</style>
	</head>
	<body>
		
		<div id="father">
			I am father
		</div>
		
		<div id="son1">
			I am son1
		</div>
		
		<div id="son2">
			I am son2
		</div>
		
	</body>
</html>

看图:在father这个容器设置了相对定位之后,son1和son2都设置了绝对定位,我们的子类这时其实不是在body中绝对定位(absolute),而是在其父类的范围中绝对定位(absolute)。


绝对定位

position: absolute;

查找定位的参照物方法:
从当前元素开始往上找,直到找到一个具有定位属性的元素为准,以这个元素为参照进行定位。
如果没有一个元素有定位属性,最终就参照body进行定位。(我一直理解的就是绝对定位就是你想定哪里定哪里)

定位的时候:结合top left right bottom 这四个方向属性进行配合定位。但是要注意:不能同时选择left喝right

注意:这里要区别于相对定位,在使用相对定位时,无论是否进行移动,原来的位置就没有了。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#box1{
				background-color: salmon;
				width: 100px;
				height: 100px;
				position: absolute;
				left: 100px;
				top: 50px;
			}
		</style>
	</head>
	<body>
		<div id="box1">
			我是box1,我采用了绝对定位
		</div>
		
	</body>
</html>

相对定位

position: relative;

相对定位是相对于元素在文档中的初始位置——首先它出现在它所在的位置上(即不设置position时的位置,然后通过设置垂直或水平位置,让这个元素“相对于”它的原始起点进行移动;

注意,在使用相对定位时,无论是否进行移动,原来的位置始终保留着。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#box1{
				width: 100px;
				height: 100px;
				background-color: brown;
				position: relative;
				left: 300px;
				top: 300px;
			}
			
			#box2{
				width: 100px;
				height: 100px;
				background-color: blue;
			}
		</style>
	</head>
	<body>
		
		<div id="box1">
			
		</div>
		
		<div id="box2">
			
		</div>
		
	</body>
</html>

绝对定位和相对定位的区别

  1. 相对定位的参照物是参照物本身。
    绝对定位的参照物就是父级元素,当父级元素中不存在相对定位,那么它的参照物就是body
  2. 相对定位,设置后,原来的位置始终保留着
    绝对定位,设置后,原来的位置会被后面的内容占据

原文链接:https://link.zhihu.com/?target=https%3A//blog.csdn.net/hanhanwanghaha/article/details/108961741

作者:我一个超级无敌可爱的人鸭

出处:CSDN

次我们来说一下,HTML网页中的定位,有很多小伙伴一定好奇,为什么我们写的代码都是按顺序罗列的而在网页的展示效果中,我们的各种样式,标签,图片等东西都是出现在网页的各个位置,网页看起来很美观,各种盒模型摆放合理,这是因为在HTML中有定位的能力,今天我们就来学习一下。

position在英语中是位置的意思,而在我们CSS代码中position也是跟位置有关的,position有三个属性值分别为relative(相对定位:相对于自己原来的位置进行定位,但保留自己原来的位置,别的元素无法占用),absolute(绝对定位:相对于有定位的父级进行定位,如果没有则相对于文档进行定位,定位会脱离文档,不保留原来的位置,会和原来的文档不在一个层),fixed(位置定位:他的位置不会随着滑轮的滚动而改变较常见于弹窗广告,他也会脱离文档流)。

我们说完了position,接下来我们就说说他是怎么进行定位的,我们有left,top,right,bottom,五个属性分别对应 距左边,距上边,距右边,距下边,大家注意到我在每个方向前都加了个字,我们所做的定位是距各个方向的距离而不是移动,例:left:200px,是向右移动200像素,他的意思是距离左边增加200像素。在我们实际的编程中一般都不常用bottom,我们知道,滑轮是可以一直往下滑的,所以我们相对于底部定位的话就很困难。

我们来通过代码和结果来看一下:


没有定位的样式


加了relative


加了relative的结果

上面这个结果图看着比例不太对是因为作者截图没截好[捂脸]

我们可以看出猫图片并没有移动,而是给兔子图片留着位置。


加了absolute


加了absolute的结果

这个结果我们可以看出猫图片向前移动了,并没有保留兔子图片原来的位置


加了fixed

代码中的<br>是为了使滑轮可以滑动,以便更好的展示效果。

<script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

用了fixed的效果展示。

以上的代码样式只对兔子图片起作用,我没有给猫添加任何样式,猫图片只是作为参照物。

对定位

position:

absolute

特性:

1、脱离文档流,定位元素占据的位置会释放

2、原点计算:如果该元素做了定位,那么就去找它做了定位的父元素(找最近的)作为原点基准,如果父元素都没做定位,则以浏览器(0,0)作为原点基准。

3、对内嵌元素定位后,设置宽高属性就会有效果

应用场景:

一般情况下,绝对定位用在下拉菜单、焦点图轮播、弹出数字气泡、特别花边等场景

相对定位

position:

relative

1、不脱离文档流,定位元素占据的位置不会被释放/

2、原点计算:以父级元素作为原点基准,若没有父级元素则以浏览器(0,0)为基准。

一般的应用:父相子绝

3、父元素为相对定位,子元素为绝对定位,文档元素不会受影响。

4、父元素提供相对定位后,子元素以父元素为基准来进行定位。

应用场景:

相对定位一般情况下很少自己单独使用,都是配合绝对定位使用,为绝对定位创造定位父级而又不设置偏移量

固定定位

position:

fixed

1、脱离了文档流

2、原点计算:以浏览器(0,0)作为原点基准,尽管父元素做了定位也不会影响它的原点

基准。

应用场景:

一般在网页中被用在窗口左右两边的固定广告、返回顶部图标、吸顶导航栏等

注意:使用定位后会激活如下5个属性

left | right | top | bottom | z-index

z-index

改变定位后的叠放顺序

取值范围:-1~9999

其他:

设置网页元素的透明度

opacity: 0~1;

filter: opacity(0.2) | contrast(0.2)

绝对定位(absolute)代码案例:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>绝对定位</title>

<style type="text/css">

/*绝对定位:

*1、脱离文档流,做了定位后它占据的位置会释放。

*2、原点计算:如果该元素做了定位,那么就去找它做了定位的父元素(最近)作为原点基准,若果父元素

* 都没做定位,则以浏览器(0,0)作为原点基准。

*3、对内嵌元素做了定位后,它的宽度高度属性就会有效。

*/

*{

padding: 0px;

margin: 0px;

}

.box-father{

width: 500px;

height: 500px;

margin-left: 500px;

background-color: yellow;

position: absolute;

}

.son{

width: 400px;

height: 400px;

margin-left: 20px;

background-color: black;

position: absolute;

}

.box{

width: 300px;

height: 300px;

background-color: blue;

/*绝对定位*/

position: absolute;

/*激活4个属性*/

left: 150px;

/*right: ;*/

top: 100px;

/*bottom: ;*/

}

.box2{

width: 400px;

height: 400px;

background-color: red;

}

span{

width: 200px;

height: 200px;

background-color: green;

/* position: absolute;*/

float: left;

}

</style>

</head>

<body>

<div class="zx"> <!-- 祖先 :定位-->

<div class="box-father"> <!-- 爷爷 :定位-->

<div class="son"> <!-- 儿子:定位-->

<div class="box"> <!-- 孙子:如果孙子做了定位,它就去找接近它定位最近的父元素来做为基准 -->

</div>

</div>

</div>

</div>

<div class="box2">

</div>

<span>我是span</span>

</body>

</html>