更新 - 我决定反对 JavaScript 解决方案。确保它始终有效的唯一方法是setInterval()
每隔几秒钟让它运行一次。不想那样做。我知道这个 CSS 是可能的,我已经看到它有效。如果它结束,我将重新开放赏金,以增加 150 美元。
我有一个由两部分组成的模式弹出窗口:左和右。在这两个部分中是上面的标签和下面的内容。标签固定在一定像素数,但底部区域需要能够填充剩余空间,所以我在display:table
左右两侧和display: table-cell
内部使用,以达到“填充剩余空间”的效果. 它在 Chrome 和 Safari 中运行良好。
这是CSS:
#tagBoxLeft,#tagBoxRight {
display: table;
height: 100%;
width: 50%;
position: absolute;
right: 0;
opacity: 0;
}
#tagBoxLeft { left: 0 }
#tagBoxDescription {
display: table-row;
-webkit-border-top-left-radius: 20px;
width: 100%;
word-break: break-all;
word-wrap: break-word;
-webkit-box-shadow: 0 1px 0 #FFF;
-moz-box-shadow: 0 1px 0 #FFF;
box-shadow: 0 1px 0 #FFF;
}
.nano {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
display: table-cell;
}
#taglabel {
display: table-row;
z-index: 10000;
border-top: 1px solid #FFF;
width: 100%;
height: 39px;
}
它只是将一堆 div 放入一个表格中,这样它们就可以具有彼此相对的高度。还要注意左右两侧是相对于浏览器窗口的,所以我不能只使用百分比。
然而,在 Firefox 和 Opera 中,#tagBoxLeft
和#tagBoxRight
边部分拒绝接受height:100%;
,而它们有display:table;
. 所以它不会响应地强制底部部分向上。我知道 Firefox 和 Opera 通常支持这一点(参见http://jsfiddle.net/Qxswa/)。但是为什么我的所有内容都在 Firefox 和 Opera 中溢出?
这是该问题的屏幕截图: