高度:100%内的表格单元格无法在Firefox和IE上运行

Alv*_*aro 19 html css web

我有一些麻烦试图建立一个divheight:100%一个包裹内display:table-cell.

我注意到它在Firefox和IE 9中不起作用.

这是问题的小提琴.您可以注意到它按预期工作,Chrome或Opera.

代码有什么问题?

有什么办法可以解决吗?

我想保留父母display:tabledisplay:table-cell父母,以便将内容垂直居中于可变高度容器上.

HTML

<div class="table">
    <div class="table-cell">
        <div class="content"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

body, html {
    margin:0;
    padding:0;
    height:100%;
}
.table {
    display:table;
    width:100%;
    height:100%;
}
.table-cell {
    display:table-cell;
    vertical-align: middle;
    width:100%;
}
.content {
    height: 100%;
    display: block;
    overflow: hidden;
    position: relative;
    background: url(http://spaceinimages.esa.int/var/esa/storage/images/esa_multimedia/images/2012/11/solar_eclipse_corona/12092636-3-eng-GB/Solar_eclipse_corona_node_full_image.jpg);
    background-size:cover;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*man 26

为了height:100%工作,所有父容器必须是height:100%.如果你注意到,你的.table-cell风格没有height:100%.

添加此样式可修复Firefox中的问题:

.table-cell {
    display:table-cell;
    vertical-align: middle;
    width:100%;
    height:100%;
}
Run Code Online (Sandbox Code Playgroud)

作为替代方案,将图像添加到HTML而不是CSS background-image也可以.

body, html {
    margin:0;
    padding:0;
    height:100%;
}
.table {
    display:table;
    width:100%;
    height:100%;
}
.table-cell {
    display:table-cell;
    vertical-align: middle;
    width:100%;
}
.content {
    height: 100%;
    display: block;
    overflow: hidden;
    position: relative;
    background-size:cover;
}

.content img {
    width:100%;
    height:100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="table">
    <div class="table-cell">
        <div class="content">
            <img src="http://spaceinimages.esa.int/var/esa/storage/images/esa_multimedia/images/2012/11/solar_eclipse_corona/12092636-3-eng-GB/Solar_eclipse_corona_node_full_image.jpg"/>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="content">
    <img src="...your image url..." />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.table-cell {
    display:table-cell;
    vertical-align: middle;
    width:100%;
}

.content img {
    width:100%;
    height:100%;
}
Run Code Online (Sandbox Code Playgroud)