在定義CSS樣式的時候經常會用的 “%”這個長度單位,但是這個百分比到底是相對於誰的百分比呢?
1、有人說是相對於父元素的百分比,但是這麼說有時候卻會出問題
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.box {
width: 200px;
height: 400px;
border: 1px solid #000;
}
.child {
width: 100px;
height: 50%;
padding-bottom: 50%;
border: 1px solid #000;
}
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
其實,除了height以外垂直方向上的margin-top(bottom)或者padding-top(bottom)的百分比取值都是相對於父元素的寬度,本例中也就是200px*50%=100px。
這樣表示也不是很好,更準確的說是相對於父元素內容的寬度(不包括padding!)
例如
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.box {
width: 200px;
height: 200px;
border: 1px solid #000;
padding: 50px;
box-sizing: border-box;
}
.child {
width: 100px;
height: 50%;
padding-bottom: 50%;
border: 1px solid #000;
}
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
當然這是border-box盒模型,在默認的content-box盒模型下元素的width就是指的content的寬,就不用考慮這個問題了