利用CSS3新属性解决border和padding会撑大盒子实际大小的问题

CSS3中可以通过box-sizing来指定盒模型,有2个值:即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变。

可以分成两种情况:

  1. box-sizing:content-box 盒子大小为width + padding+ border(以前默认的)
  2. box-sizing:border-box盒子大小为width

如果盒子模型我们改为了box-sizing:border-box,那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)。

实例:

<body><p class="back">实际大小</p><div>会因为border和padding而改变实际大小</div><p class="new">box-sizing: border-box;</p>
</body>
.back {width: 200px;height: 200px;background-color: lightcoral;
}div {/* 因为border和padding而改变实际大小 */width: 200px;height: 200px;background-color: lightgreen;padding: 50px;border: 10px solid black;
}.new {width: 200px;height: 200px;background-color: lightgreen;padding: 50px;border: 10px solid black;/* 设置box-sizing: border-box;后不会因为border和padding而改变实际大小。 */box-sizing: border-box;
}