Css学习: postion 绝对定位之后 width 100% 的处理

一个常用的,但完美的方案
更新于: 2023-09-08 17:10:26

核心代码

注意,不要使用 width: 100%; 而要使用 left/right: 0 来代替。

.container {
  padding: 70px 30px 30px;
  position: relative;
}

.container .footer {
  padding-inline: inherit;
  position: absolute;
  bottom: 30px;
  left: 0;
  right: 0;
}

使用width

若要使用 width,记得使用 box-sizing 保证最终的 offsetWidgh 是在正常范围。

.container {
  padding: 70px 30px 30px;
  position: relative;
}

.container .footer {
  position: absolute;
  bottom: 30px;
  left: 0;
  width: 100%;
  padding-inline: inherit;
  box-sizing: border-box;
}

HTML部分

<div class="container">
  <div class="footer">
    <button>Left</button>
    <button>Right</button>
  </div>
</div>

完整代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        box-sizing: border-box;
        padding: 70px 30px 30px;
        border: 1px solid red;
        position: relative;
        height: 90vh;
      }
      .footer {
        display: flex;
        justify-content: space-between;
        padding-inline: inherit;
        // 这个可以换成 padding-left/padding-right: inherit;
        border: 1px solid green;
        position: absolute;
        bottom: 30px;
        left: 0;
        right: 0;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="footer">
        <button>Left</button>
        <button>Right</button>
      </div>
    </div>
  </body>
</html>

参考