Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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 什么打破了这张桌子的布局?_Html_Css - Fatal编程技术网

Html 什么打破了这张桌子的布局?

Html 什么打破了这张桌子的布局?,html,css,Html,Css,使用CSS的表格、表格行和表格单元格div的简单内容布局: <div style="display:table-cell; border:1px solid blue"> some content <!-- this line wrappend in <p> tag in next example --> <p>some content</p> ... </div> 一些内容 一些内容 ...

使用CSS的表格、表格行和表格单元格div的简单内容布局:

<div style="display:table-cell; border:1px solid blue">
    some content  <!-- this line wrappend in <p> tag in next example -->
    <p>some content</p>
    ...
</div>

一些内容
一些内容

...

上面的示例中,左侧单元格的内容放在段落(第一行)中:

如您所见,将标签放入左单元格后,右单元格向下移动。 我是否使用
标记并不重要。假设它确实更改了行高度,并且相邻单元格中的第一行与它对齐


有人能解释这种行为吗。如何防止相邻单元格移动?

这似乎与浏览器添加到
标记的页边距有关自动尝试此

div[style*="table-cell"] p:first-child {
  margin: 0;
}

这似乎与浏览器添加到
标记的边距有关。请自动尝试以下操作

div[style*="table-cell"] p:first-child {
  margin: 0;
}

它采用“表格单元格”的浏览器默认行为,垂直对齐为继承、继承、中间。(奇怪的是,在你的页面底部)

只需在CSS中添加“
vertical align:top
”就可以肯定地解决您的问题。

例如,Firefox[用户代理html.css]:

tr {
  display: table-row;
  vertical-align: inherit;
}
tbody {
  display: table-row-group;
  vertical-align: middle;
}
thead {
  display: table-header-group;
  vertical-align: middle;
}
tfoot {
  display: table-footer-group;
  vertical-align: middle;
}
/* for XHTML tables without tbody */
table > tr {
  vertical-align: middle;
}
td { 
  display: table-cell;
  vertical-align: inherit;
  text-align: inherit; 
  padding: 1px;
}

它采用“表格单元格”的浏览器默认行为,垂直对齐为继承、继承、中间。(奇怪的是,在你的页面底部)

只需在CSS中添加“
vertical align:top
”就可以肯定地解决您的问题。

例如,Firefox[用户代理html.css]:

tr {
  display: table-row;
  vertical-align: inherit;
}
tbody {
  display: table-row-group;
  vertical-align: middle;
}
thead {
  display: table-header-group;
  vertical-align: middle;
}
tfoot {
  display: table-footer-group;
  vertical-align: middle;
}
/* for XHTML tables without tbody */
table > tr {
  vertical-align: middle;
}
td { 
  display: table-cell;
  vertical-align: inherit;
  text-align: inherit; 
  padding: 1px;
}


“对于表格数据,表格不是更好吗?”@johncode可能是的,但我遇到了这个问题,无法解释这种奇怪的行为。我不能把它当作悬而未决的谜团。@johncode它们也适用于“等高”设计。表格不是更适合表格数据吗?@johncode可能是的,但我遇到了这个问题,无法解释这种奇怪的行为。我不能把它当作一个悬而未决的谜。@johncode它们也适用于“等高”设计。尝试过,但Firefox忽略了这一点。@Milche patren你的解决方案是好的,你的解释是错误的。基线对齐与文本对齐有关。。。不总是和底部一样。也。。。底部或基线不是表格单元格的默认对齐方式,而是中间对齐方式。此外,如果在包含表格的表格单元格周围绘制一个框,您将看到它与另一个单元格对齐。。。哦,我不能对你的帖子发表评论。@davidunricwebkit是针对Safari/Chrome的,所以这个特定的答案不适用于所有浏览器。相反,只要将单元格中第一个元素的边距顶部设置为0(如果希望对齐)。我已经更正了我的答案,可以在其他浏览器中使用。@upful-Right,它不是底部,它是继承的(firefox和gChrome检查)。尝试过,但firefox忽略了这一点。@Milche Patren您的修复是好的,您的解释是错误的。基线对齐与文本对齐有关。。。不总是和底部一样。也。。。底部或基线不是表格单元格的默认对齐方式,而是中间对齐方式。此外,如果在包含表格的表格单元格周围绘制一个框,您将看到它与另一个单元格对齐。。。哦,我不能对你的帖子发表评论。@davidunricwebkit是针对Safari/Chrome的,所以这个特定的答案不适用于所有浏览器。相反,只要将单元格中第一个元素的边距顶部设置为0(如果希望对齐)。我已经更正了我的答案,可以在其他浏览器中使用。@upful正确,它不是底部,而是继承的(firefox和gChrome检查)。感谢您展示一个工作示例。采用浏览器默认的“表格单元格”行为是否有文档记录?哼?一种默认浏览器行为的图表,这很好,但它是特定于供应商的。浏览器可以将其从一个版本更改为另一个版本,等等。如果它存在,我想知道。感谢显示一个工作示例。采用浏览器默认的“表格单元格”行为是否有文档记录?哼?一种默认浏览器行为的图表,这很好,但它是特定于供应商的。浏览器可以将其从一个版本更改为另一个版本,等等。如果它存在,我想知道。