transform改變定位元素的包含塊

admin發表於2018-11-29
css3之前絕對定位元素的包含塊規則可以參閱以下兩篇文章:

(1).CSS absolute絕對定位一章節。

(2).CSS fixed固定定位一章節。

特別說明:一個元素會根據矩形盒計算自身定位和大小,此矩形盒就是包含塊。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#relative {
  position: relative;
  width: 100px;
  height: 100px;
  background: green;
}
#absolute {
  position: absolute;
  width: 20px;
  height: 20px;
  top: 0;
  right: 0;
  background: blue;
}
#transform {
  background: red;
  width: 50px;
  height: 50px;
}
</style>
</head>
<body>
  <div id="relative">
    <div id="transform">
      <div id="absolute"></div>
    </div>
  </div>
</body>
</html>

上面的程式碼中,絕對定位的div元素是以外層相對定位的元素(準確的說是產生的包含塊)為參考物件的。

再來看一段程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#relative {
  position: relative;
  width: 100px;
  height: 100px;
  background: green;
}
#absolute {
  position: absolute;
  width: 20px;
  height: 20px;
  top: 0;
  right: 0;
  background: blue;
}
#transform {
  background: red;
  width: 50px;
  height: 50px;
}
#transform {
  transform: scale(1);
}
</style>
</head>
<body>
  <div id="relative">
    <div id="transform">
      <div id="absolute"></div>
    </div>
  </div>
</body>
</html>

上面的程式碼為中間的div元素應用如下程式碼:

[CSS] 純文字檢視 複製程式碼
transform: scale(1);

所以內部絕對定位的div元素就會以中間的div元素為參考物件;對position:fixed定位也是同樣的道理。

相關文章