我很惊讶我无法通过Google搜索找到这个问题的简单答案,但大多数对滚动内容面板的响应要么无法正常工作,要么无法使用bootstrap。
答案like this one有完整页面滚动条,这似乎不对。
我只是尝试使用没有浏览器滚动条的100%高度html
和body
,但只在主体内容区域滚动显示。它需要具有引导菜单高度等行为。
到目前为止,唯一的方法似乎是使用绝对位置内容和页脚元素。
html {
height: 100%;
}
html body {
height: 100%;
overflow: hidden;
}
html body .container-fluid.body-content {
position: absolute;
top: 50px;
bottom: 30px;
right: 0;
left: 0;
overflow-y: auto;
}
footer {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 30px;
}
但这似乎是错误的方式,似乎会对Bootstrap布局产生负面影响。例如,如果菜单行换行为两行,则内容区域位于导航栏div。
下请问有没有正确的方法来解决这个样式,这与开箱即用的MVC Razor / Bootstrap应用程序兼容?
这是一个可以使用的JSFiddle(包括我在下面回答的最新解决方案):
答案 0 :(得分:23)
添加以下css以禁用默认滚动:
body {
overflow: hidden;
}
并将#content
css更改为此选项以仅在内容正文上进行滚动:
#content {
max-height: calc(100% - 120px);
overflow-y: scroll;
padding: 0px 10%;
margin-top: 60px;
}
<强> 编辑: 强>
实际上,我不确定你面临的问题是什么,因为你的css似乎正在发挥作用。我只添加了HTML和标题css语句:
html {
height: 100%;
}
html body {
height: 100%;
overflow: hidden;
}
html body .container-fluid.body-content {
position: absolute;
top: 50px;
bottom: 30px;
right: 0;
left: 0;
overflow-y: auto;
}
header {
position: absolute;
left: 0;
right: 0;
top: 0;
background-color: #4C4;
height: 50px;
}
footer {
position: absolute;
left: 0;
right: 0;
bottom: 0;
background-color: #4C4;
height: 30px;
}
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<header></header>
<div class="container-fluid body-content">
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
</div>
<footer></footer>
&#13;
答案 1 :(得分:7)
另一种选择是使用flexbox。
虽然IE8和IE9不支持,但您可以考虑:
尽管需要一些额外的浏览器特定样式前缀才能获得完整的跨浏览器支持,但您可以在this fiddle和以下代码段中看到基本用法:
html {
height: 100%;
}
html body {
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
}
html body .container-fluid.body-content {
width: 100%;
overflow-y: auto;
}
header {
background-color: #4C4;
min-height: 50px;
width: 100%;
}
footer {
background-color: #4C4;
min-height: 30px;
width: 100%;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<header></header>
<div class="container-fluid body-content">
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>Lorem Ipsum<br/>
</div>
<footer></footer>
答案 2 :(得分:2)
在我得到更好的选择之前,这是我能解决的最“引导”的答案:
JSFiddle: http://jsfiddle.net/TrueBlueAussie/6cbrjrt5/
我已经切换到使用LESS并包含Bootstrap Source NuGet包以确保兼容性(通过让我访问bootstrap variables.less
文件:
body-content
容器navbar-fixed-bottom
<hr/>
放在页脚之前(现在是多余的)相关网页HTML:
<div class="container-fluid body-content">
@RenderBody()
</div>
<footer class="navbar-fixed-bottom">
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
在Site.less
HTML
和BODY
高度设置为100%BODY
overflow
设为hidden
body-content
div position
设为absolute
body-content
div top
设置为@navbar-height
,而不是硬连线值body-content
div bottom
设为30px
。body-content
div left
和right
设为0 body-content
div overflow-y
设为auto
<强> Site.less 强>
html {
height: 100%;
body {
height: 100%;
overflow: hidden;
.container-fluid.body-content {
position: absolute;
top: @navbar-height;
bottom: 30px;
right: 0;
left: 0;
overflow-y: auto;
}
}
}
剩下的问题是bootstrap中似乎没有footer height
的定义变量。如果有人打电话告诉我,如果在Bootstrap中定义了一个神奇的30px变量,我会很感激。