1. 程式人生 > >css佈局--父級元素高度自適應

css佈局--父級元素高度自適應

  在專案中需要實現這樣一個佈局,子元素相對於父元素絕對定位,其中子元素的高度是確定的,希望父元素能夠自適應子元素的高度,實現兩個div的底沿對齊。

html:

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.p{
			background: yellow;
			border: 1px solid green;
			position: relative;

		}
		.c{
			position: absolute;
			left: 10px;
			top:10px;
			background: red;
			width: 100px;
			height: 100px;
			
		}
	</style>
</head>
<body>
	<div class="p">
		<div class="c">頂頂頂頂本部是基礎元素的一部分,"mod"是必需內容單元,"grid"內獨立或且可複用的功能區塊,頁面內容的主要承擔者

要點:

自定義命名,以mod-為字首
必須緊接著"grid"/"region"
</div>
	</div>
</body>


效果如下:

父元素的高度為0,子元素完全脫離了父元素,原因是:絕對定位的元素脫離了文件流,而高度自適應的前提是文件流佈局,脫離文件流的子元素是不會參與高度計算的。

後來修改了程式碼,將子元素的絕對定位,改為相對定位,子元素沒有脫離文件流,父元素根據子元素的高度(margin+padding+border+height)來計算自己的高度,但是依舊發現子元素仍由一部分超出在父元素之外,怎麼辦呢?

後來我試著給父元素加上padding-bottom,值就是子元素相對定位設定的top,例如.c 的top為10px,最後的結果就是可以自適應(兩個div底沿對齊)。