当我查看我创建的盒子的实际宽度和实际高度时,尺寸会通过我在计算中始终知道的内容来确认:
width =内容的边框填充宽度
height =内容的边框填充高度
但是在w3.org上它说:框宽度由左右边距,边框和填充以及内容宽度的总和给出 . 高度由顶部和底部边距,边框和填充以及内容高度的总和给出 .
那是哪个呢?我知道边距对于盒子模型很重要,但它不会影响盒子的大小 .
div {
border: 1px solid black;
height: 200px;
margin: 2px;
padding: 5px;
width: 200px;
}
/*200px + 2px + 10px = 212px */
<div></div>
4 回答
"Box model"是@ K.Daniek在上面描述的内容 . 但是,我的印象是您想要知道所定义宽度中包含哪些参数 . 这取决于使用的
box-sizing
:默认是内容框:这里所有内容都加起来:宽度加边框加填充构成了框的可见外部宽度(如果它通过边框和/或背景可见) . 边距是额外的 - 与父元素的外部距离 . (有特殊情况下折叠边距,这是额外的事情)所以给定的宽度不包括任何其他东西 .
对于border-box,给定的宽度包括边框和填充 . 再次,利润额外/外 .
使用填充框,给定宽度仅包括填充,但不包括边框 . 再次,利润是额外的/外部的,它们总是(相对于定义的
width
) .另请参见下面的示例,它们对宽度,边框,填充和边距都有相同的设置,但有三种不同的可能性:
保证金确实影响宽度
元素的总宽度=宽度左边填充右边填充左边框右边框左边距右边距
元素的总高度=高度顶部填充底部填充顶部边界底部边界顶部边缘底部边距
在这里
width = 200px 5px(padding-left)5px(右边填充)2px(左边距)2px(边距右边)1px(border-left)1px(border-right)= 216px .
查看此链接http://learn.shayhowe.com/html-css/opening-the-box-model/
希望这可以帮助
检查此代码段,它使用javascript显示div的总宽度
Yes ,箱型包括保证金 . 框模型代表形成正文文档的四条边: margin area , border area , padding area 和 content area . 我帖子底部的图片可能对您有所帮助 .
可以使用padding-top,padding-right,padding-bottom,padding-left和shorthand padding CSS属性来控制填充和内容边缘之间的空间 .
如果 don't want 包含 margin area ,则可以使用
box-sizing
属性 .box-sizing: border-box
将导致box-model仅使用 content, padding and border area .box-sizing: content-box
将只计算 content area without padding, border and margin area .box-sizing: padding-box
将仅使用 content and padding area .资料来源:https://css-tricks.com/the-css-box-model/
如果你看一下代码片段,我有3个div,一个没有box-sizing属性,一个用box-sizing作为border-box,第三个用content-box .
根据offsetWidth上的MDN,它是内容边框填充的总和,但不是边距 .
因此,当将大小调整指定为边框时,内容宽度会自动减小以分享其填充和边框的值 . 在给定的示例中,使用box-sizing:border-box和width为200px,内容水平长度(宽度)减少到188px以使内容填充边界为200px . 内容框,填充和边距另外添加到内容宽度200,因此我们看到宽度为212px .
基本上,当未指定box-sizing时,box-sizing的默认值是inherits,它是content-box .
因此,主要是宽度计算取决于box-sizing属性 . offsetWidth始终是内容填充边距,唯一不同的是基于box-sizing属性的内容宽度 .