Html 为什么盒子尺寸对桌子和div的作用不同?
以下是HTML:Html 为什么盒子尺寸对桌子和div的作用不同?,html,css,html-table,Html,Css,Html Table,以下是HTML: 外分区 内分区,10px边距。 内部分区,10px填充。 相同,框大小:边框框 内桌,10px填充 在我的Chrome中看起来是这样的: 我想直到最后一次我都明白了。我的Chrome inspector显示表的计算框大小样式是内容框,因此我希望它的行为类似于第二个div,并且溢出,看起来很难看。为什么不同?这在HTML/CSS规范中有记录吗?这就是元素的工作原理。这些图元不是块级图元 它包含给定宽度内的填充,就像其他块级元素上的框大小:边框框一样 仅供参考,我在任何地方都
外分区
内分区,10px边距。
内部分区,10px填充。
相同,框大小:边框框
内桌,10px填充
在我的Chrome中看起来是这样的:
我想直到最后一次我都明白了。我的Chrome inspector显示表的计算框大小
样式是内容框
,因此我希望它的行为类似于第二个div,并且溢出,看起来很难看。为什么不同?这在HTML/CSS规范中有记录吗?这就是
元素的工作原理。这些图元不是块级图元
它包含给定宽度内的填充,就像其他块级元素上的框大小:边框框
一样
仅供参考,我在任何地方都找不到该文档。是的,CSS2.1对包含以下内容的表格进行了说明:
但是,在HTML和XHTML1中,元素的宽度是从左边框边缘到右边框边缘的距离
注意:在CSS3中,将根据UA样式表规则和“框大小”属性定义此特殊要求
当前的CSS3定义对此没有任何说明,但将上面的引语翻译为(X)HTML中的基本意思是,表使用边框框模型:填充和边框不会添加到表的指定宽度
请注意,在框大小调整属性方面,不同的浏览器处理这种特殊情况的方式似乎有所不同:
- Chrome
框大小
设置为初始值,内容框
;改变它没有任何效果。在内联样式中重新定义框大小:内容框
,这也是意料之中的。无论哪种方式,Chrome似乎都在强制表格始终使用边框框模型
- IE
框大小
设置为边框框
;将其更改为内容框
会使其行为类似于第二个div
- Firefox
-moz框大小
设置为边框框
;将其更改为内容框
或填充框
会使其相应调整大小
由于CSS3还没有提到桌上盒子的尺寸,所以这并不令人惊讶。至少,结果是一样的——只是底层实现不同。但是考虑到上面的说明,我想说IE和Firefox更接近预期的CSS3定义,因为在Chrome中,似乎无法使用框大小属性更改表的框模型
具有的表根本并没有填充,尽管在本例中,由于您的表不使用此模型,所以它不相关:
请注意,在此模型中,表格的宽度包括表格边框的一半。此外,在此模型中,表没有填充(但有边距)
这是因为div
是块元素。尝试添加显示:块代码>到内部表。它将显示与div相同的内容。@Bram Vanroy:1)就在那时。2) 这个问题的全部要点是问为什么一张桌子的行为会与一块不同;将表更改为块将实现什么?@BoltClock您误解了我的评论(因此,它是一条评论)。我只是简单地解释了为什么会出现这种差异。我没有试图回答这个问题;反正我也没有把它作为答案贴出来。
<div style='width:300px;border:1px solid green'>
<div>Outer div</div>
<div style='width:100%;border:1px solid red;margin:10px;'>
Inner div, 10px margin.
</div>
<div style='width:100%;border:1px solid red;padding:10px;'>
Inner div, 10px padding.
</div>
<div style='width:100%;border:1px solid red;padding:10px;box-sizing:border-box'>
Same, with box-sizing: border-box
</div>
<table style='width:100%;border:1px solid red;padding:10px;'>
<tr><td>Inner table, 10px padding</td></tr>
</table>
</div>