定位、相对定位、绝对定位

我们可以使用css的position属性来设置元素的定位类型, postion的设置项如下

  • relative:生成相对定位元素,所占据的文档流的位置保留,元素本身相对自身原位置进行偏移
  • absolute: 生成绝对定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于上一个设置了定位的父级元素来进行定位,如果找不到,则相对于body元素进行定位。
  • fixed: 生成固定定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于浏览器窗口进行定位。
  • static:默认值,没有定位,元素出现在正常的文档流中,相当于取消定位属性或者不设置定位属性。
  • inherit: 从父元素继承position属性的值。

定位元素的偏移

  • 定位的元素还需要用left、right. top或者bottom来设置相对于参照元素的偏移值。

相对定位

  • left:相对于左边向右偏移XXpx
  • top:相对于顶部向下偏移XXpx

绝对定位

  • left:上一个设置定位的父级元素相对于左边向右偏移XXpx,如果没有父级元素定位,则相对于body偏移
  • top:上一个设置定位的父级元素相对于顶部向下偏移XXpx,如果没有父级元素定位,则相对于body偏移

定位元素层级

  • 位元素是浮动的正常的文档流之上的,可以用z-index属性来设置元素的层级

定位元素的特性

  • 绝对定位和固定定位的块元素和行内元素会自动转化为行内块元素(不设置宽高,大小由内容决定)
  • 绝对定位和固定定位后,该元素margin:50px auto 0  无法水平居中,因为auto失效,其他仍可用margin-left
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>定位</title>
	<style type="text/css">
		.con{
			width: 400px;
			height: 400px;
			border: 1px solid black;
			margin: 50px auto 0;
			/*position: relative; 父级定位*/

		}

		.box01,.box02,.box03{
			width: 300px;
			height: 100px;
			margin: 10px;
		}

		.box01{
			background-color: green;
			position: relative;  /*相对定位*/
			left: 50px;  /*相对于左边向右偏移50px*/
			top: 50px;  /*相对于顶部向下偏移50px*/
			
		}

		.box02{
			background-color: gold;
			position: absolute;  /*绝对定位*/
			/*父级元素.con没有设置定位,则相对于body进行偏移*/
			left: 50px;  /*相对于body向右偏移50px*/
			top: 50px;  /*相对于body向下偏移50px*/
		}

		.box03{
			background-color: blue;
			position: fixed;  /*固定定位*/
			left: 100px;  /*相对于浏览器窗口向右偏移100px*/
			top: 100px;  /*相对于浏览器窗口向下偏移100px*/
		}

	</style>
</head>
<body>
	<div class="con">
		<div class="box01"></div>
		<div class="box02"></div>
		<div class="box03"></div>
	</div>
</body>
</html>

相对定位

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>定位层级关系</title>
	<style type="text/css">
		.con{
			width: 400px;
			height: 400px;
			border: 1px solid #000;
			margin: 50px auto 0;
			position: relative; /*设定绝对定位的参照点*/
		}
		
		/*定义四个div元素的大小和绝对定位元素属性*/
		.con div{
			width: 200px;
			height: 200px;
			position: absolute;
		}

		.box01{
			background-color: green;
			left: 20px;  /*相对父级元素.con位置相对于左边向右偏移20px*/
			top: 20px;  /*相对父级元素.con位置相对于上边向下偏移20px*/
			z-index: 10;  /*设置层级为10 = 置顶,默认层级<10*/
		}

		.box02{
			background-color: gold;
			left: 40px;
			top: 40px;
		}

		.box03{
			background-color: blue;
			left: 60px;
			top: 60px;
		}

		.box04{
			background-color: pink;
			left: 80px;
			top: 80px;
		}

	</style>
</head>
<body>
	<div class="con">
		<div class="box01"></div>
		<div class="box02"></div>
		<div class="box03"></div>
		<div class="box04"></div>
	</div>
</body>
</html>

定位实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>定位实例</title>
	<style type="text/css">
		.con{
			width: 100px;
			height: 100px;
			background-color: gold;
			margin: 50px auto 0;
			position: relative;

			border-radius: 14px;  /*半径14的圆角,除非半径50才能成圆*/
		}

		.box{
			width: 28px;
			height: 28px;
			background-color: red;
			color: white;
			text-align: center;
			line-height: 28px;
			position: absolute;
			right: -14px;
			top: -14px;

			border-radius: 14px;  /*半径14的圆*/
		}


	</style>
</head>
<body>
	<div class='con'>
		<div class="box">5</div>
	</div>
	

	
</body>
</html>

定位元素的特性,定位居中、弹窗实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>定位实例</title>
	<style type="text/css">
		.con{
			width: 960px;
			height: 80px;
			background-color: gold;
			/*margin: 50px auto 0;  auto水平居中失效*/
			position: fixed;  /*固定定位,当前屏幕*/
			
			/*水平居中*/
			top: 0px;
			left: 50%;  /*偏移浏览器的一半位置*/
			margin-left: -480px;  /*再偏移父元素一半宽度*/
		}/*锁定父元素,下拉不消失*/


		p{
			text-align: center;
		}
		
		.popup{
			width: 500px;
			height: 300px;
			border: 1px solid #000;
			background-color: #fff;
			position: fixed; /*固定定位,当前屏幕*/

			left: 50%;
			margin-left: -251px;  /*水平居中*/

			top: 50%;
			margin-top: -151px;  /*垂直居中*/
			z-index: 9999  /*置于最前面*/
		}

		.popup h2{
			background-color: gold;
			margin: 10px;
			height: 40px;
		}

		.mask{
			position: fixed;
			width: 100%;
			height: 100%;
			background-color: #000;
			left: 0px;
			top: 0px;
			opacity: 0.5;  /*透明度50%*/
			z-index: 9998;
		}

		.pop_con{
			display: none;  /*隐藏*/
			display: block;  /*显示*/
		}


	</style>
</head>
<body>
	<div class='con'>1111</div>
	
	<div class="pop_con">
		<div class="popup">
		<h2>弹窗标题</h2>
	</div>
	<div class="mask"></div>
	</div>

	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />
	<p>网页文字</p>
	<br />
	<br />
	<br />
	<br />
	<br />
	<br />

	

	
</body>
</html>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS中的定位属性是布局控制的重要工具,它主要有两种主要方式:绝对定位(absolute positioning)和相对定位(relative positioning)。 **1. 相对定位 (Relative Positioning)**: - 原则:相对定位是基于元素的正常文档流来进行定位的。如果设置了`position: relative;`,元素会保持其在文档中的默认位置,然后可以通过`top`, `right`, `bottom`, 和 `left` 属性指定偏移量。 - 行为:相对定位的元素不会影响到其他元素的位置,它会在原位置的基础上移动,同时周围的元素会围绕它移动。 - 示例:你可以使用相对定位来创建一个弹出框或浮动元素。 **2. 绝对定位 (Absolute Positioning)**: - 原则:绝对定位元素会脱离正常的文档流,完全根据`top`, `right`, `bottom`, `left` 属性以及`position: absolute;`声明来定位,与最近的已定位(`position: relative;`)祖先元素相关联,如果没有,则相对于视口(浏览器窗口)定位。 - 行为:绝对定位元素会完全离开其在文档中的原始位置,其他元素也不会因此受到影响,除非它们也设置为绝对定位并覆盖了该元素。 - 示例:通常用于创建固定在页面某个角落的导航菜单或图片,或者是响应式的网页设计中,如轮播图中的图片。 **相关问题**: 1. 相对定位绝对定位有什么区别? 2. 如何使用`position: relative;`和`position: absolute;`来配合使用? 3. 绝对定位的`z-index`属性有什么作用?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值