Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 是折叠边界模型';在web浏览器中的实现有效吗?_Html_Css_Css Tables - Fatal编程技术网

Html 是折叠边界模型';在web浏览器中的实现有效吗?

Html 是折叠边界模型';在web浏览器中的实现有效吗?,html,css,css-tables,Html,Css,Css Tables,我试图理解CSS 2.2规范已有一段时间,但没有成功(粗体选择是我的): UAs必须通过以下方式计算表的初始左右边框宽度: 检查表格第一行中的第一个和最后一个单元格。表格的左边框宽度是第一个单元格折叠左边框的一半,而 表格的右边框宽度是最后一个单元格折叠右边框宽度的一半 边境如果后续行具有较大的折叠左右边框, 然后,任何多余的溢出物都会溢出到桌子的边缘区域 表格的上边框宽度是通过检查所有 将其顶部边框与表的顶部边框折叠。上边 表的宽度等于最大折叠顶部边框的一半 这就是在Chrome中实现边框、折

我试图理解CSS 2.2规范已有一段时间,但没有成功(粗体选择是我的):

UAs必须通过以下方式计算表的初始左右边框宽度: 检查表格第一行中的第一个和最后一个单元格。表格的左边框宽度是第一个单元格折叠左边框的一半,而 表格的右边框宽度是最后一个单元格折叠右边框宽度的一半 边境如果后续行具有较大的折叠左右边框, 然后,任何多余的溢出物都会溢出到桌子的边缘区域

表格的上边框宽度是通过检查所有 将其顶部边框与表的顶部边框折叠。上边 表的宽度等于最大折叠顶部边框的一半

这就是在Chrome中实现边框、折叠等的方式(FF和IE>7是相同的):

当我期待这样的事情时:

我原以为桌子的左边框是14像素厚。因为第一个单元格的折叠左边框
#cell_1_1
宽28px(表格的左边框宽度是第一个单元格折叠左边框的一半),在左边,边框在单元格和表格之间分割。因此,从视觉上看,表格在第一个单元格附近有28个像素的边框,但14个像素属于第一个单元格的边框。然后表格左侧的边框保持不变。如果某些单元格的边框较宽,则它们会向左突出,而不会影响表格的左边框

上边框也是一样

我还认为问题可能与摘录中的首字母有关,也就是说,这些规则仅适用于表没有指定边框的情况,但事实证明它们并不相关(删除表的边框样式规则只会删除绿色边框)

那么,谁能回答下面的问题呢

  • Chrome、FF、IE中这种折叠边界模型的实现是否正确

  • 如果它们是正确的,我对规范的理解有什么问题


现在,如果我们反之亦然,并假设在Chrome中的实现是派生规范的起点,那么这部分应该与下一部分类似(为了简洁起见,我只保留了与左边框相关的部分):

UAs必须计算表格的初始左右边框宽度,然后使用该宽度相对于其包含块定位表格 检查表格第一行中的第一个和最后一个单元格。在解决所有边界冲突(如果有)后,表格的左边框宽度为第一个单元格折叠左边框的一半

如果后续行具有较大的折叠左右边框, 然后,任何多余的溢出物都会溢出到桌子的边缘区域

任何溢出到边缘的边界都将在 确定表是否溢出某些祖先(请参阅“溢出”),但不影响表相对于其包含块的位置

那么这段摘录就有意义了

这里有一个表格,它的边框比第一个单元格的边框宽,位于一个包含粉红色背景的块中(如我们所见,表格的边框选择在第一个单元格的边框上方,因为它较宽,然后此边框用于将表格放置在容器内。后续单元格的较宽边框伸出表格的边框):

这里有一个相同的表,第一个单元格的边框比表的边框宽,在边界冲突解决过程中选择在它上面。这里这个边框用于相对于容器定位表:

答案是“不”。我喜欢CSSWG所进行的坦率的讨论,并且上面的注释告诉了你关于这个问题所需要知道的一切

自浏览器 以不同的方式处理这一点,没有 重新实施

…某些组合不是适定问题,因此 渲染算法可能是最优的

因为它们从简单的HTML变成了非常简单的东西 复杂的(HTML+CSS),web浏览器使用的当前表格呈现模型非常疯狂 buggy,不可互操作,根本不是CSSish) 假设被打破,效果图也大不相同

(重点加上。)


当前草案中有更多的信息,但是CSS工作组承认(1)浏览器实现不一致,(2)即使是他们自己目前的提案也不充分。

这是一个好问题!它值得1000票的支持。然而,我不知道什么是正常行为,但就我而言,我认为Firefox是正确的行为,因为在我的头脑结构中,我认为符合我的要求,其他行为似乎有问题。但我不知道:(如果你看到“边界冲突”部分,你会看到W3C所说的正确行为,在该部分的底部有两幅图像说明了这一点。@MarcosPérezGude,谢谢,我看到了该部分。它本身就有意义。但在摘录中,规范说:
表的左边界宽度是第一个单元格折叠宽度的一半左边框
以及应该如何处理?这是否意味着第一个单元格的边框宽度重新定义了表中声明的边框宽度?请注意,这是在CSS2.1中首次指定的(在2.2中没有更改)。它在1998年CSS2中不存在。可能是因为没有浏览器更新其行为以匹配
table {
  border: 6px solid green;
  border-spacing: 0;
  border-collapse: collapse;
}
#cell_1_1 {
  border: 28px solid red;
}
#cell_2_1 {
  border: 12px solid chartreuse;
}
#cell_2_2 {
  border: 2px solid cyan;
}