使用表格显示属性,您可以通过在滚动部分的文本周围再包裹两个元素来克服 firefox 问题,因此您有三个:
- 外层是一个
table-row
容器,可以填满桌子的其余部分
- 在其中我们有一个相对定位的容器,其中
height
和width
设置为100%
,并且设置了垂直滚动overflow-y:scroll;
- 最里面的容器绝对是
height
并且width
也设置为100%
所以在这里我只是快速地在你的内容段落周围添加了两个 div 容器(你可能会根据你的需要找到一组更合适的容器,但这将用于说明):
<div id="wrapper">
<h2 id="date">Date</h2>
<h1 id="title">A title ...</h1>
<div id="contentbox-outer">
<div id="contentbox-inner">
<p id="content">The content ...</p>
</div>
</div>
</div>
你的整个 CSS 都必须修改。您的原始选择器,稍作修改:
#wrapper {
position:absolute;
display: table;
table-layout:fixed;
background-color:black;
padding:10px;
width: 250px;
height:350px;
border-spacing:20px;
}
#date {
display: table-row;
font-weight: normal;
font-size: 25px;
background-color:yellow;
}
#title {
display: table-row;
font-weight: normal;
font-size: 40px;
line-height:90%;
background-color:blue;
}
请注意,table-row
andtable
元素现在采用表格的特定样式,例如border-spacing
设置表格行之间的间距的属性,您现在可以将其与表格的 padding 属性结合以获得所需的外观。
添加容器的样式将是这样的(首先仍然基于您的样式,最后两个是附加的 - 内部的):
#contentbox-outer {
display: table-row;
font-size: 12pt;
width: 100%;
height:90% !important;
text-align: justify;
background-color:red;
overflow-y: scroll;
}
#contentbox-inner {
position:relative;
height:100%;
width:100%;
overflow-y:scroll;
}
#content {
position:absolute;
height:100%;
width:100%
}
我还更新了您的小提琴以进行快速检查:http:
//jsfiddle.net/3HYJx/7/
编辑:这适用于 Firefox、Chrome、Safari 等浏览器,但例如不适用于 Opera,因为height: 100%
在严格模式下不会在文档中呈现。因此,通过更多研究,我发现您可以让它在quirks 模式下工作,这是一个测试 html - 上面的代码,但在 quirks 模式文档中。感谢您给我一个学习的理由,很高兴知道=)