1. 程式人生 > >absolute與relative的愛恨情仇

absolute與relative的愛恨情仇

absolute
第一種情況:
程式碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>absolute與relative的相愛相殺</title>
	    <style>
			
			.p{
				width: 200px;
				border: 2px solid burlywood;
				margin: 100px auto;
			}
			
			.box1{
				position: absolute;
				left: 100px;
				width: 300px;
				height: 300px;
				background-color: #DEB887;
			}
			
			.box2{
				position: absolute;
				width: 200px;
				height: 200px;
				background-color: darkcyan;
			}
			
			span{color: red;}
		</style>
	</head>
	<body>
		<p>1,相對於一個<span>已定位的包含它</span>的元素</p>
		<div class="box1">父類
			<div class="box2">子類</div>
		</div>
		<p class="p">菜鳥教程解釋:位置設定為 absolute 的元素,可定位於相對於第一個已定位(非靜態的)的包含它的元素的指定座標。此元素的位置可通過 "left"、"top"、"right" 以及 "bottom" 屬性來規定。</p>
	</body>
</html>

截圖:
在這裡插入圖片描述
由結果可知,當父類為一個(已經定位)的元素時:子類(absolute)則以父類的左上角的原始基點進行定位(left,right,top,bottom,margin,padding);

第二種情況:
程式碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>absolute與relative的相愛相殺</title>
	    <style>
			
			.box1{
				margin-left: 100px;
				width: 300px;
				height: 300px;
				background-color: #DEB887;
			}
			
			.box2{
				position: absolute;
				width: 200px;
				height: 200px;
				background-color: darkcyan;
			}
			
			span{color: red;}
		</style>
	</head>
	<body>
		<p>2,相對於一個<span>未定位的包含它</span>的元素,且子類沒有<span>top,left,right,bottom(不包括marginpadding)</span></p>
		<div class="box1">父類
			<div class="box2">子類</div>
		</div>
		</body>
</html>

截圖
在這裡插入圖片描述
結果可知:預設基於父類左上角,且只能由margin以及padding調整位置

第三種:
程式碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>absolute與relative的相愛相殺</title>
	    <style>
			
			.box{
				position: absolute;
				left: 100px;
				width: 400px;
				height: 400px;
				background-color: red;
			}
			
			.box1{
				margin-left: 100px;
				width: 300px;
				height: 300px;
				background-color: #DEB887;
			}
			
			.box2{
				position:absolute;
				left: 0px;
				width: 200px;
				height: 200px;
				background-color: darkcyan;
			}
			
			span{color: red;}
		</style>
	</head>
	<body>
		<p>2,相對於一個<span>未定位的包含它</span>的元素,且子類存在<span>top,left,right,bottom(不包括marginpadding)</span>其中一項</p>
		<div class="box">
		<div class="box1">父類
			<div class="box2">子類</div>
		</div>
		</div>
		</body>
</html>

截圖:
在這裡插入圖片描述
結果可知:如果子類定位為absolute,且存在TRBL其中一項,則以第一個的已定位的父類的左上角為基準,如沒有,則以瀏覽器左上角為基準。

relative(相對的單純,哈哈哈)
程式碼:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>absolute與relative的相愛相殺</title>
	    <style>
			
			.box{
				position: absolute;
				left: 100px;
				width: 400px;
				height: 400px;
				background-color: red;
			}
			
			.box1{
				margin-left: 100px;
				width: 300px;
				height: 300px;
				background-color: #DEB887;
			}
			
			.box2{
				position:relative;
				left: 0px;
				width: 200px;
				height: 200px;
				background-color: darkcyan;
			}
			p{width: 300px;border: 2px solid #DEB887;}
			span{color: red;}
		</style>
	</head>
	<body>
		<p>2,相對於一個<span>其正常位置</span>通過<span>top,left,right,bottom,margin,padding</span>進行定位</p>
		<div class="box">
		<div class="box1">父類
			<div class="box2">子類</div>
		</div>
		</div>
		<p style="position: relative;margin-top: 440px;">菜鳥解釋:生成相對定位的元素,相對於其正常位置進行定位。
因此,"left:20" 會向元素的 LEFT 位置新增 20 畫素。</p>
		</body>
</html>

截圖:
在這裡插入圖片描述
結果可知:relative定位相對簡單,(但是如果一元素沒有父類,且定位為relative則就要考濾,其在html中的層次關係處於那一層次了)(重要)。