盒子模型是css中一个重要的概念,其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型。(标准盒子模型以及怪异盒子模型)他们对盒子模型的解释各不相同,先来理解下两种不同的盒子:
从上图可以看到标准 w3c 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分。
ie 盒子模型(怪异盒子模型)
从上图可以看到 ie 盒子模型的范围也包括 margin、border、padding、content,和标准 w3c 盒子模型不同的是:ie 盒子模型的 content 部分包含了 border 和 pading。
例:一个盒子的 margin 为 20px,border 为 1px,padding 为 10px,content 的宽为 200px、高为 50px,假如用标准 w3c 盒子模型解释,那么这个盒子需要占据的位置为:宽 20*2+1*2+10*2+200=262px、高 20*2+1*2*10*2+50=112px,盒子的实际大小为:宽 1*2+10*2+200=222px、高 1*2+10*2+50=72px;假如用ie 盒子模型,那么这个盒子需要占据的位置为:宽 20*2+200=240px、高 20*2+50=70px,盒子的实际大小为:宽 200px、高 50px。
1、考虑到盒子的大小设置会比较麻烦,有时设置的width,结果最后大小不是之前设置的大小,所以这时就要box-sizing登场了,当我们设置box-sizing:border-box以后,如果我们想要一个宽度100的盒子,直接设置width为100,就不用考虑该盒子是否为标准盒子了。这是box-sixing最实用的一个属性。等于:siting-width=border+padding+content-width;(为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度)
2、当box-sizing设置成content-box后,等于标准情况:siting-width=conten-width;(在宽度和高度之外绘制元素的内边距和边框。)
领取专属 10元无门槛券
私享最新 技术干货