使用Bootstrap 3.3.7
创建布局时遇到了一些困难我已经设置了一个小提示来展示我得到的东西:https://jsfiddle.net/b8ukxb41/5/
我有三个问题似乎无法解决:
我希望左手导航菜单(红色边框勾勒)与内容区域的高度相同(用蓝色边框勾勒)。
无论内容区域内有多少内容,页脚都应始终位于浏览器窗口的“底部”。我不想要一个粘性页脚 - 如果浏览器中出现滚动条,则页脚应始终位于浏览器窗口的底部,不会显示粘滞。
如果内容区域中有大量内容,则右侧应该有一个滚动条。但是,左侧导航菜单应保持固定位置。
我能说的最接近的事情就像Gmail一样,你可以在其中向下滚动右边的消息列表,但是左边的文件夹导航仍然处于固定位置 - 左列完全向下在浏览器窗口的底部。
我已尝试以下方法来解决问题,但这些解决方案都不起作用:
在带有绿色边框的容器上使用display: flex;
,即<div class="container-fluid" style="border:1px solid green; display: flex;">
。这似乎没有做任何事情。我的依据是How can I make Bootstrap columns all the same height?
我尝试使用以下CSS作为页脚:
footer {
position: absolute;
right: 0;
bottom: 0;
left: 0;
}
问题在于,有时页脚会出现在带有红色边框的导航菜单“内部”。如果您向右滚动到窗口底部,它只会出现在浏览器窗口的底部。
我花了很长时间研究这个问题,并感谢任何人提供的任何有用的建议。
我想要实现的整体事情总结如下:红色边框导航应与蓝色边框内容区域的高度相同。标题应该是固定的。页脚应始终显示在浏览器窗口的底部 - 无论蓝色内容区域中有多少内容:
答案 0 :(得分:1)
我不能代表问题2)和3),但快速浏览一下,告诉我你的#sidebar有一个“margin-top:10px;”对此有所规定。删除此规则以使红色和蓝色框从相同高度开始。
答案 1 :(得分:1)
根据给定的 HTML
,不使用flexbox50px
。 右侧的主要内容,侧边栏和.content
:
身高:calc(100vh - 100px)
(50px导航栏高度和50px页脚高度)。
在右侧 侧 .content
设置overflow-y: auto
。
main,
main aside,
main .content {
height: calc(100vh - 100px);
}
main {
margin-top: 50px;
}
main aside,
main .content {
padding: 15px 0;
}
main aside {
background: red;
}
main .content {
overflow-y: auto;
background: blue;
}
.footer {
height: 50px;
line-height: 50px;
background: #F8F8F8;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="navbar navbar-fixed-top navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<!-- /.nav-collapse -->
</div>
<!-- /.container -->
</div>
<!-- /.navbar -->
<main>
<div class="container-fluid">
<div class="row">
<aside class="hidden-xs col-sm-3">
<ul>
<li>List 1</li>
<li>List 2</li>
<li>List 3</li>
<li>List 4</li>
<li>List 5</li>
</ul>
</aside>
<div class="content col-sm-9">
<div class="jumbotron">
<a href="#" class="visible-xs" data-toggle="offcanvas"><i class="fa fa-lg fa-reorder"></i></a>
<h1>test</h1>
<p>This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.</p>
</div>
<div class="col-xs-12">
<h2>Heading</h2>
<p>Bootstrap is a front-end framework that uses CSS and JavaScript to facilitate responsive Web design. Bootply is a playground for Bootstrap that enables developers and designers to test, prototype and create mockups using Bootstrap friendly HTML,
CSS and Javascript.</p>
<p><a class="btn btn-default" href="#">View details »</a></p>
</div>
<div class="col-xs-12">
<h2>Heading</h2>
<p>Bootstrap is a front-end framework that uses CSS and JavaScript to facilitate responsive Web design. Bootply is a playground for Bootstrap that enables developers and designers to test, prototype and create mockups using Bootstrap friendly HTML,
CSS and Javascript.</p>
<p><a class="btn btn-default" href="#">View details »</a></p>
</div>
<div class="col-xs-12">
<h2>Heading</h2>
<p>Bootstrap is a front-end framework that uses CSS and JavaScript to facilitate responsive Web design. Bootply is a playground for Bootstrap that enables developers and designers to test, prototype and create mockups using Bootstrap friendly HTML,
CSS and Javascript.</p>
<p><a class="btn btn-default" href="#">View details »</a></p>
</div>
<div class="col-xs-12">
<h2>Heading</h2>
<p>Bootstrap is a front-end framework that uses CSS and JavaScript to facilitate responsive Web design. Bootply is a playground for Bootstrap that enables developers and designers to test, prototype and create mockups using Bootstrap friendly HTML,
CSS and Javascript.</p>
<p><a class="btn btn-default" href="#">View details »</a></p>
</div>
</div>
</div>
</div>
</main>
<footer class="footer">
<div class="container-fluid">
Footer
</div>
</footer>
答案 2 :(得分:1)
红色边框导航应与蓝色边框内容区域的高度相同。标题应该是固定的。页脚应始终显示在浏览器窗口的底部 - 无论蓝色内容区域中有多少内容:
Flexbox可以做到这一点。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
::before,
::after {
box-sizing: inherit;
}
.container {
height: 100vh;
padding-top: 50px;
display: flex;
flex-direction: column;
}
header {
height: 50px;
position: fixed;
top: 0;
left: 0;
width: 100%;
background: grey;
color: white;
text-align: center;
padding: 1em;
}
.content {
flex: 1;
display: flex;
}
aside {
flex: 0 0 200px;
background: red;
overflow-y: auto;
padding: .5em;
}
main {
flex: 5;
background: blue;
overflow-y: auto;
}
.mini-spacer {
height: 500px;
}
.spacer {
height: 1000px;
}
footer {
height: 50px;
width: 100%;
background: grey;
color: white;
text-align: center;
padding: 1em;
}
<div class="container">
<header>HEADER</header>
<div class="content">
<aside>
<div class="mini-spacer"></div>
</aside>
<main>
<div class="spacer">
</div>
</main>
</div>
<footer>FOOTER</footer>
</div>