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

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

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

  1. <!DOCTYPE html>
  2. <html lang="cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. #parent {
  10. position: relative;
  11. width: 200px;
  12. background-color: red;
  13. height: 100px;
  14. padding: 100px;
  15. border: 100px solid #ccc;
  16. }
  17. #child {
  18. position: absolute;
  19. width: 50%;
  20. height: 50px;
  21. background-color: green;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div id="parent">
  27. <div id="child"></div>
  28. </div>
  29. </body>
  30. </html>

  1. 如上图和上述代码所示,我们使用到的child是相对于parent的绝对定位,此时
  2. parentcontent width200px 左右padding分别为100pxborder
  3. 100px,我们此时childwidth50%,此时结果为200px,所以可以知道绝对定位元
  4. 素的宽高百分比是相对于临近的position不为static的祖先元素的padding box
  5. 计算的。
  1. <!DOCTYPE html>
  2. <html lang="cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. #parent {
  10. width: 200px;
  11. height: 100px;
  12. padding: 100px;
  13. background-color: red;
  14. }
  15. #child {
  16. width: 50%;
  17. height: 50px;
  18. background-color: green;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div id="parent">
  24. <div id="child"></div>
  25. </div>
  26. </body>
  27. </html>

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

三、总结

  1. 绝对定位元素的宽高百分比是相对于临近的position不为static的祖先元素的
  2. padding box来计算的。
  3. 非绝对定位元素的宽高百分比则是相对于父元素的content box来计算的。

相关文章