添加到子项的元素类型不同时,父对象/子绝对的对齐问题

时间:2016-02-24 07:30:02

标签: html css

我遇到了一些我无法解释的CSS陷阱。

http://jsfiddle.net/z2mf21ry/

有一个位置:隐藏溢出的亲戚,我添加了一个位置为absolute的绝对容器:0。当我在其中添加div.element元素时,容器正确地居中于其父级的右侧。如果我添加更多div,容器会变得更宽(因为我不想将元素包装成新行),并且在某些时候我只能看到最后的n个div(情况#1)。

然后,我将第一个div替换为单行2个单元格的表格,单元格中包含长文本,这仍然很好(案例#2)。

最后,我删除了一个单元格的文本(或只设置了一个字符),例如:

<div class="element">
  <table><tbody>
    <tr>
      <td class="received">Child 1 with table c1</td>
      <td class="received">a</td>
    </tr>
  </tbody></table>
</div>

此时,右侧居中消失(情况#3),好像容器的中间部分与父级的中间部分对齐。此外,还出现了一个滚动条。

我对Firefox 44,IE 9,Chrome 48有相同的行为。 我想这肯定是对CSS流程的误解,但我不明白为什么,我也不知道如何跟踪这类问题。

如果您可以查看并告诉我如何突出显示问题(例如,启动萤火虫,突出显示此元素,查看布局等),它会很棒。 谢谢!

编辑:如果添加到子容器的无包装元素有display:table-cell(case#4),似乎没问题。这是另一个删除父溢出的jsfiddle:隐藏并添加一个边距,以查看在情况#3中绿框似乎没有正确居中的情况下发生了什么。事实上,似乎元素已经不在容器流中了。

http://jsfiddle.net/yfny908g/

此外,情况#3中的问题可以使用min-width而不是width:25px来解决td元素。

它仍然没有解释案例#2和案例#3之间的区别。

0 个答案:

没有答案