我的页面上有一个标题。它的内容可以换行,所以它不是固定高度。页面的其余部分应由内容容器填充。当容器中的内容过多时,它应该激活垂直滚动。我尝试了很多可能性,但总是陷入死胡同(位置:绝对或显示:表格)。现在我回到起点:(
这是我工作的起点。绿色容器是我的页面。我使用 JqueryUI 使其可重新调整大小,但我正在寻找非 JS 解决方案。
感谢您的时间并希望您的帮助。
这有效:
.page {
background-color: #8f8;
width: 80%;
height: auto;
}
.header {
background-color: #fcc;
}
.content {
background-color: #ccf;
overflow: auto;
height: inherit;
}
我认为可以这样解决:
.page {
background-color: #8f8;
min-height: 100%;
width: 80%;
}
.header {
background-color: #fdc;
overflow: hidden;
}
.content {
background-color: #ccf;
overflow-y: auto;
height: 100%;
width: 100%;
/*word-wrap: break-word;*/
}
好的,我做了什么:
min-height: 100%
使页面填满所有空间更有意义。display:block
.最后,为了避免页面脱离底部,将标题作为内容 div 的一部分。向我询问更多详情。
更新:这是我测试过的例子。
UPDATE2 我得到的最好的是:
.page {
background-color: #ccf;
max-height: 100%;
width: 80%;
overflow: hidden;
}
.header {
background-color: #fdc;
overflow: hidden;
}
.content{
overflow-y: auto;
height: 100%;
word-wrap: break-word;
}
它唯一的问题是滚动认为它正在滚动的是所有“页面”元素而不仅仅是内容,所以你看不到滚动的最终箭头。我认为这可以通过使用 javascript 来解决,但是使用 css 我认为没有更好的解决方案。
Javascript可能的解决方案:
$(window).resize(function() {
resizeContent();
});
$(document).load(function(){
resizeContent();
});
function resizeContent(){
$('.content').height($(".page").height()-$('.header').height());
}
最终解决方案的链接可以在这里找到
编辑:即使很多答案都很接近,我仍然this behavior cannot be achieved only using CSS and NOT having a styling issue
会陈述并解释原因。
问题:
解决方案:
最后:
I don't think what you want is possible in css... You should look into a JS solution I'm afraid.
注意:老实说,我想帮助 OP,我很确定这不能用纯 CSS 实现。
我认为不使用任何 javascript 是不可能的,这是我为满足您的要求而制作的 jsbin,请看一下:http: //jsbin.com/acirez/1。
这是结果:
注意:考虑将.page
和.header
类改为 id,因为 javascript 会:
$('div.content').height($('.page').height() - $('.header').height());
如果您不希望出现水平条,只需更改overflow: scroll;
for overflow-y: scroll;
。
希望能帮助到你!
编辑:添加图像。
我不知道您是否可以移动 DOM,但如果可以,我建议您将标题放在内容页面中。这不是最自负的方式,但它是我在没有 JS 的情况下得到的唯一想法。
所以,把你的标题放在内容中,然后设置内容min-height
为 100%。内容将始终填充其父级,如果文本比容器长,则会出现滚动条。
请注意,由于可调整大小,滚动条始终存在。在您的上下文中,它不会存在。
只需将内容设为其父级的 100% 高度即可。
.content {height: 100%;}
我不认为你想要的在 css 中是可能的......你应该研究一个 JS 解决方案,我害怕。
我已经用表格属性进行了测试,并且让标题变得灵活很容易。让内容填满其余内容也很容易......但是当文本变长时,我无法让剩余的内容滚动。我找不到解决方案,坦率地说,我认为不存在。证明我错了......为此找到一个纯css解决方案会很有趣:)。
这是据我所知:
为 div.content 赋予 overflow-y: scroll 属性,以及超过 div.page 的高度。我刚刚让它高度:100%。然后隐藏div.page上的溢出。
.page {
background-color: #8f8;
height: 200px;
width: 80%;
overflow: hidden;
}
.header {
background-color: #fcc;
}
.content {
background-color: #ccf;
overflow-y: scroll;
height: 100%
}
现在如果盒子真的被打包的话,这将切断最后一点溢出,但这是我能想到的唯一解决方案,而不使用一些js来动态调整div.content的大小。
一个简单的解决方案是将以下内容添加到您的#content:
height:100px;
overflow-y: scroll;
这给了它一个高度,他留下了一个高度。使overflow-y:scroll;
内容在 100px 后可滚动;
如果你想要更多,你可以给它一个最小和最大高度,如下所示:
min-height:100px;
max-height:600px;
overflow-y: scroll;
在这种情况下,它会一直填充它直到高度达到 600px,然后会进入overflow-y:scroll;
//更新//
将内容和标题的位置放在relative
并应用于height:auto; padding-bottom:50px;
#page
好的,所以我不太确定您到底想要什么,但这是一个尝试。
http://jsbin.com/asazaq/1/edit
如果您不将标题的高度设置为固定值,现在没有非 JavaScript 方法可以让标题和内容填充所有可用空间。
这是第二个使用 Css3 的 Calc 函数。
http://jsbin.com/asazaq/2/edit
也许这更符合您的喜好,但旧浏览器不支持它