Box-sizing是CSS3的Box属性之一,那他当然也遵循CSS的Boxmodel原理,CSS中Boxmodel是分为两种,第一种是W3C的标准模型,另一种是IE的传统模型,他们相同之处都是对元素计算尺寸的模型,具体说就是对元素的width,height,padding,border以及元素实际尺寸的计算关系。
1、W3C的标准BoxModel:
/*外盒尺寸计算(元素空间尺寸)*/Element空间高度=contentheight+padding+border+marginElement空间宽度=contentwidth+padding+border+margin/*内盒尺寸计算(元素大小)*/ElementHeight=contentheight+padding+border(Height为内容高度)ElementWidth=contentwidth+padding+border(Width为内容宽度)。
2、IE)传统下BoxModel(IE6以下,不含IE6版本或“QuirksMode下IE5.5+”):
/*外盒尺寸计算(元素空间尺寸)*/Element空间高度=contentHeight+margin(Height包含了元素内容宽度,边框宽度,内距宽度)Element空间宽度=contentWidth+margin(Width包含了元素内容宽度、边框宽度、内距宽度)/*内盒尺寸计算(元素大小)*/ElementHeight=contentHeight(Height包含了元素内容宽度,边框宽度,内距宽度)ElementWidth=contentWidth(Width包含了元素内容宽度、边框宽度、内距宽度)。
box-sizing属性:
1、content-box:此值为其默认值,其让元素维持W3C的标准BoxModel,也就是说元素的宽度/高度(width/height)等于元素边框宽度(border)加上元素内边距(padding)加上元素内容宽度/高度(contentwidth/height)即:ElementWidth/Height=border+padding+contentwidth/height。
2、border-box:此值让元素维持IE传统的BoxModel(IE6以下版本),也就是说元素的宽度/高度等于元素内容的宽度/高度。(从上面BoxModel介绍可知,大家这里的contentwidth/height包含了元素的border,padding,内容的width/height【此处的内容宽度/高度=width/height-border-padding】)。
说这么多为什么没有margin-box属性,个人觉也许是用户场景需求不足导致未制定该属性。