我想给我的div和textarea一些填充。当我这样做时,它将增加元素的大小,而不是缩小元素内部的内容区域。有什么方法可以实现我的目标?
* {box-sizing: border-box;}
到样式表中,大小将按您期望的方式运行。保罗·爱尔兰(Paul Irish)确认它对所有现代浏览器都是安全的:paulirish.com/2012/box-sizing-border-box-ftw
我想给我的div和textarea一些填充。当我这样做时,它将增加元素的大小,而不是缩小元素内部的内容区域。有什么方法可以实现我的目标?
* {box-sizing: border-box;}
到样式表中,大小将按您期望的方式运行。保罗·爱尔兰(Paul Irish)确认它对所有现代浏览器都是安全的:paulirish.com/2012/box-sizing-border-box-ftw
Answers:
根据CSS2规范,框型元素的渲染宽度等于其宽度,左/右边框和左/右填充的总和(左右边距也起作用)。如果您的盒子的宽度为“ 100%”,并且还具有边距,边框和填充,它们将影响(增加)对象所占的宽度。
因此,如果您的textarea需要为100%宽,则应将width,margin-left / right,border-left / right和padding-left / right的值分配为等于100%的值。
在CSS3中,我们有三个框大小模型。您可以使用border-box
模型:
在此元素上指定的宽度和高度(以及相应的最小/最大属性)确定元素的边框。也就是说,在元素上指定的任何填充或边框都将在此指定的宽度和高度内进行布局和绘制。内容的宽度和高度是通过从指定的“宽度”和“高度”属性中减去各边的边框和填充宽度来计算的。
它取决于浏览器及其box模型的实现。您遇到的是正确的行为。
IE传统上会把它弄错:http : //en.wikipedia.org/wiki/Internet_Explorer_box_model_bug