绝对定位元素与非绝对定位元素的百分比计算的区别?

x33g5p2x  于2022-04-10 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(375)

一、写在前面
绝对定位中使用百分比,和非绝对定位使用百分比,之间存在区别,一个是针对padding box,另一个是针对content box
二、详细解释

<!DOCTYPE html>
<html lang="cn">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #parent {
      position: relative;
      width: 200px;
      background-color: red;
      height: 100px;
      padding: 100px;
      border: 100px solid #ccc;
    }

    #child {
      position: absolute;
      width: 50%;
      height: 50px;
      background-color: green;
    }
  </style>
</head>

<body>

  <div id="parent">
    <div id="child"></div>
  </div>

</body>

</html>

如上图和上述代码所示,我们使用到的child是相对于parent的绝对定位,此时
parent的content width为200px, 左右padding分别为100px,border为
100px,我们此时child的width为50%,此时结果为200px,所以可以知道绝对定位元
素的宽高百分比是相对于临近的position不为static的祖先元素的padding box来
计算的。
<!DOCTYPE html>
<html lang="cn">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #parent {
      width: 200px;
      height: 100px;
      padding: 100px;
      background-color: red;
    }

    #child {
      width: 50%;
      height: 50px;
      background-color: green;
    }
  </style>
</head>

<body>

  <div id="parent">
    <div id="child"></div>
  </div>

</body>

</html>

如上图和上述代码所示,此时为非定位模式,父元素的content width 为200px, 左右padding分别为100px,并且此时child的width为50%,所以child为100px。所以可以知道非绝对定位元素的宽高百分比则是相对于父元素的content box来计算的。

三、总结

绝对定位元素的宽高百分比是相对于临近的position不为static的祖先元素的
padding box来计算的。

非绝对定位元素的宽高百分比则是相对于父元素的content box来计算的。

相关文章