CSS - “块级元素框的水平分量之和总是等于父级的宽度?”

时间:2013-12-22 09:33:27

标签: css w3c specifications

我正在阅读Eric Meyer撰写的CSS The Definitive Guide。在页162,它说:

  

规则几乎一样简单,即正常流程中块级元素框的水平分量之和总是等于父级的宽度。

我在W3C规范中找到了类似的段落:

  

非浮动块级元素的水平位置和大小由七个属性决定:' margin-left',' border-left',' padding-left',' width',' padding-right',' border-right'和' margin-right'。这七个的总和总是等于宽度'父元素。

但是,我可以想到一个非常简单的情况,即上述规则不成立。

# HTML
<div><p>This is a paragraph.</p></div>

# CSS
div { width: 200px; }
p { width: 300px; }

显然我可以设置overflow来包含p元素。但是,我只想知道我是否错误地解释了规则?

2 个答案:

答案 0 :(得分:2)

除了好奇心之外,您不应该阅读CSS1的旧规格,因为您可以在您链接的页面上的红色框中阅读。 CSS2.1很好地定义了这种情况:在paragraph 10.3.3中,您可以读到这样的配置称为过度约束,并忽略一个水平边距并设置为一个值以使其相等真正。如果写作模式是从左到右,则选择正确的,否则它将是左侧的。

答案 1 :(得分:1)

我认为这意味着“100%的子元素总是等于父元素的宽度”。显然,如果您将宽度设置为更小/更大,它将有所不同。但除非特别设置,否则它会继承相同的宽度。