css子元素设置width或height为百分之百再设置margin或padding溢出

子元素 width: 100%后再设置 margin 或 padding 就会溢出父元素

<div
  style="
    width: 200px;
    height: 50px;
    background: green;
    "
>
  <div
    style="
        width: 100%;
        height: 100%;
        background: pink;
        margin: 10px;
        "
  ></div>
</div>

如何解决?

一、父元素设置 padding,取消子元素上的 margin 与 padding 设置

<div
  style="
    width: 200px;
    height: 50px;
    background: green;
    padding: 10px;
    "
>
  <div
    style="
        width: 100%;
        height: 100%;
        background: pink;
        "
  ></div>
</div>

二、box-sizing: border-box

若子元素只有 padding 设置而没有 margin 设置,则可以在子元素上设置 box-sizing: border-box; 这样子元素的宽度 100%将包含内容宽度、padding 和边框宽度三者。

<div
  style="
    width: 200px;
    height: 50px;
    background: green;
    padding: 10px;
    "
>
  <div
    style="
        width: 100%;
        height: 100%;
        background: pink;
        padding: 10px;
        box-sizing: border-box;
        "
  ></div>
</div>

知识扩展:box-sizing 的两种取值

默认取值:content-box,元素占用宽度/高度 = width/height + padding + border + margin

border-box,元素占用宽度/高度 = width/height + margin,padding 与 border 包含在 width/height 中