我正在尝试制作一个非常简单的页面布局:一个固定位置的标题,以及可以滚动的内容。标题是未知高度,会显示其所有内容。我希望内容占据标题底部到页面底部之间的所有空间,并且可以滚动。
我有一些限制:
- 我不想使用固定或绝对定位来保持标题的位置,而是使用一个完美高度的 div 显示内容,并仅让该 div 可滚动
- 我不想设置
max-height
或任何其他需要知道标题 div 高度的属性
我尝试了两种方法来实现这个效果:使用表格布局和 flex 布局。但我都没能成功让滚动起作用。以下是两次尝试的代码。我正在使用 React。如果有指针,请告诉我。谢谢!
编辑:我使用内联样式并在生成标题后测量其高度成功实现了此目标。这在桌面 Chrome、Android Chrome 和 Android 浏览器上均可正常工作,但在 iOS Safari 上则出现了问题。我不知道为什么会出现问题,正在进行调试。但我更希望找到一种不需要内联样式的更简洁的解决方案。谢谢!
React 元素:
var SimpleScrolly = React.createClass({
render: function(){
var lorem = "Lorem ipsum dolor sit amet... ";
var sampleText = lorem + lorem + lorem + lorem;
var sampleHeader = "this is a header!"
return(
<div className={"simple_scrolly"}>
<div className={"header"}>
{sampleHeader}
</div>
<div className={"content"}>
{sampleText}
</div>
</div>
);
}
});
表格布局的样式:
.simple_scrolly{
display: table;
height: 100%;
.header{
display: table-row;
}
.content{
overflow: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
display: table-row;
}
}
Flex布局的样式:
.simple_scrolly{
display:flex;
flex-direction: column;
align-items: flex-start;
.header{
flex-grow:0;
}
.content{
overflow: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
flex-grow:1;
}
}
$('.content).css({ 'height' : $(window).height() - $('.header').outerHeight() });
怎么样? - Pejs