CSS 定位屬性

絕對定位

position:absolute

設置爲絕對定位的元素框將會從文檔流中完全刪除,並相對於其包含塊(父元素)定位,包含塊可能是文檔中的另一個元素或者是初始包含塊(body)元素

絕對定位會脫離文檔流,並且不佔空間,普通文檔流的元素的佈局會認爲絕對定位的元素不存在,所以絕對定位的元素可以覆蓋在其他元素上,可以通過 z-index 來控制這些層的相應順序。

<html>
	<head>
		<style type="text/css">
			/* 由於 div1 沒有已定位的祖先元素,所以此處以 body 爲準 */
			.div1{
				width: 100px;
				height: 100px;
				background: blue;
				position: absolute;
				left: 50px;
			}
			/* 以父類的位置爲標準,也就是 div1 */
			.div2{
				width: 50px;
				height: 50px;
				background: gray;
				position: absolute;
				left: 50px;
				top: 80px;
			}
		</style>
	</head>
	<body>
		<div class="div1">
	    	div1
			<div class="div2">
				div2
			</div>
		</div>
	</body>

效果圖:
image
效果圖中,div2 的父元素是 div1 ,以 div1 爲基準。div2 距離 div1 的 top 80px,left 50px 。

絕對定位不會佔用原來的空間,以下面的代碼生產的效果圖示例:

<html>
	<head>
		<style type="text/css">
			.div1{
				width: 100px;
				height: 100px;
				background: blue;
				position: relative;
			}
			.div2{
				width: 50px;
				height: 50px;
				background: gray;
				position: absolute;
				left: 20px;
			}
			#span1{
				width: 100px;
				height: 30px;
				background: green;
				display: inline-block;
			}
			
		</style>
	</head>
	<body>
		<div class="div1">
			<div class="div2"></div>
			<span id="span1">
				1
			</span>
		</div>
	</body>
</html>

效果圖
image
圖中,灰色 div2 的框覆蓋住了綠色的 span1 ,不在佔用原來的空間

相對定位

position:relative

設置爲相對定位的元素框會偏移某個距離。元素仍然保持其未定位前的形狀,它原本所佔的空間仍保留。

相對位置的座標參考系是以自己上一次的位置作爲原點參考,其實也就是相對於自己的位置。

<html>
	<head>
		<meta charset="utf-8">
		<style type="text/css">
			.div1{
				width: 100px;
				height: 100px;
				background: blue;
				left: 50px;
			}
			/* 自己的原本位置爲標準,也就是左上角 */
			.div2{
				width: 50px;
				height: 50px;
				background: gray;
				position: relative;
				left: 100px;
			}
		</style>
	</head>
	<body>
		<div class="div1">
			<div class="div2"></div>
		</div>
	</body>
</html>

效果圖:
image

相對定位是以它最初的位置爲準,因爲 div1(藍色) 是父類,所以它最初位置在 div1 內,然後它距離左邊 100px。

相對定位的元素,將會佔用原來的空間,示例代碼:

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
		    .div1{
				width: 100px;
				height: 100px;
				background: blue;
				position: relative;
			}
			.div2{
				width: 50px;
				height: 50px;
				background: gray;
				position: relative;
				left: 20px;
			}
			#span1{
				width: 100px;
				height: 30px;
				background: green;
				display: inline-block;
			}
		</style>
	</head>
	<body>
		<div class="div1">
			<div class="div2"> </div>
			<span id="span1">
				1
			</span>
		</div>
	</body>
</html>

效果圖
image
如圖說是,灰色的 div2 依舊佔用着空間,所以 span1 只能放在下面
注意

如果有文字的情況下,如果在有文字的範圍內,那麼長度或者高度要包括文字的長度和高度。在使用相對定位時,無論是否進行移動,元素仍然佔據原來的空間。因此,移動元素會導致它覆蓋其它框。
還有, 當 position:absolute 會改變 display 類型,也就是 inline-block 方式進行顯示。

其他

  • static(默認值)
    • 該元素出現在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
    • 元素框正常生成。塊級元素生成一個矩形框,作爲文檔流的一部分,行內元素則會創建一個或多個行框,置於其父元素中。
    • 表示沒有定位
  • fixed
    • 元素框的表現類似於將 position 設置爲 absolute,不過其包含塊是視窗本身。
    • 固定定位的元素不會隨瀏覽器窗口的滾動條滾動而變化,也不會受文檔流動影響,而是始終位於瀏覽器窗口內視圖的某個位置。

總結

相對定位是“相對於”元素在文檔中的初始位置,而絕對定位是“相對於”最近的已定位祖先元素,如果不存在已定位的祖先元素,那麼“相對於”最初的包含塊(body)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章