我试图通过将其父级设置为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;
}
答案 0 :(得分:7)
取消所有高度声明:设置为display: table-cell
的项目作为某个元素设置为display: table
的子项应始终为其父级的100%高度。
您在同一元素上也有display: block
和display: table-cell
。即使display: table-cell
优先(因为它是最后一个),您应该尝试保持代码清洁。
以下代码适用于我:
<div>
<a href="#">test</a>
</div>
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; }