CSS position中 绝对定位和相对定位的区别以及占位问题

!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>CSS中的盒子模型</title>
		<style>
			body {
				margin: 0;
			}
 
			.d1 {
				width: 300px;
				height: 300px;
				background-color: greenyellow;
				position: relative;
				left: 50px;
				top: 50px;
				margin: 20px;
				
				border: 10px solid black;
				padding: 20px;
		
			}
			#d2 {
				width: 200px;
				height: 200px;
				background-color: red;
 
			}
			
 
			#d1 {
				width: 300px;
				height: 300px;
				background-color: greenyellow;
				position: absolute;
				left: 0px;
				top: 0px;
				margin: 20px;				
				border: 10px solid black;
				padding: 20px;
				
			}
 
		</style>
	</head>
	<body>
		<div class="d1">div1</div>
		<div id="d2">div2</div>
		<div id="d1">我是div1的实际占位</div>
	</body>
</html>

先看效果图:

absolute 不占位 不会影响其他元素的位置

relative 如果有 top right left buttom 等属性使其发生位移 但其实际占位为原位置并不是页面显示位置

 

首先解释下上图为什么这么显示

代码中先写的dvi1 相对定位并且发生位移 他的父级元素为body 所以相对body进行移动为所以最终显示为绿色div所在位置

其次代码中是div2 div是块标记会自动换行所以他的默认位置应该为上一元素的下边也就是div1的下边

但是又因为 div1是相对定位 其真实占位应该为空白div位置所以div2正好在其下边显示

需要注意的是如果2个盒子模型都有margin 只有大的margin的占位 (谁的margin大谁占位并不是2个都占位)

 如果需要算红色div距离顶部的距离 直接算div的高度就行

(注意考虑body的margin 是不是0 谷歌默认8px 还有是不是2个盒子模型都有margin)

此图中 距离应该为  body的margin 为0 只有一个盒子有margin 所以 距离就为div1的高度也就是  height+padding*2+border*2+margin*2=400px

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值