只有Firefox使用display:table-cell忽略100%的高度

Ami*_*han 4 html css firefox gecko

我试图通过将其父元素设置为display: table然后将元素设置为垂直居中元素display: table-cell; vertical-align: middle;.我还将元素的高度设置为34%其父级,100%以便填充屏幕.

这在每个浏览器(包括IE 8+)上都能很好地运行,但是Firefox.Firefox只是忽略高度并折叠到span元素的高度.

为什么会这样?

CSS

#homeNav ul {
  padding: 0;
  margin: 0;
  height: 100%;
}
#homeNav li {
  height: 34%;
  display: table;
  width: 100%;
}
#homeNav li a {
  min-height: 177px;
  height: 100%;
  line-height: 100%;
  display: block;
  text-decoration: none;
  font-size: 48px;
  border-bottom: 1px solid #fff;
  display: table-cell; vertical-align: middle;
}
#homeNav li a.last {
  border-bottom: none;
}
#homeNav li a:hover, #homeNav li a.active {
  background: none;
}
#homeNav li a span {
  padding: 50px 0 50px 100px;
  display: block;
  background: url(../images/main-nav-hover_bg-large.png) no-repeat;
  background-position: 120px 50px;
  padding-left: 160px;
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 8

取消所有高度声明:设置display: table-cell为某个元素集的子项的项display: table应始终为其父级的100%高度.

您还可以display: blockdisplay: table-cell在相同的元素.即使display: table-cell优先(因为它是最后一个),你应该尝试保持你的代码干净.

以下代码适用于我:

HTML:

<div>
    <a href="#">test</a>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div { display: table; height: 100px; border: 4px solid #000; width: 300px;}
a { display: table-cell; border: 4px solid #0f0; vertical-align: middle; text-align: center; }
Run Code Online (Sandbox Code Playgroud)

JS Fiddle上的演示.