我试图为我的主页设置一个简单的布局 这就是我希望它的样子:
不幸的是,我在指定main
div的大小时遇到了困难。我想让它动态扩展,包括高度和宽度。所以它应该"填充"其余内容未由menu
和footer
填充。
HTML:
<body>
<div class="container">
<div class="nav">
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
</div>
<div class="main">
Text...
</div>
<div class="footer">
Footer
</div>
</div>
</body>
CSS:
.nav, .content{
display: inline-block;
vertical-align: top;
}
.nav{
width: 200px;
background-color: #ccc;
}
.main{
height: 100%; /* something like 100% - 50px (height of footer) */
width: 100%; /* something like 100% - 200px (width of menu) */
overflow: hidden;
background-color: #aabbcc;
}
.footer{
background-color: #ff9999
}
您可以在此处找到示例:http://jsfiddle.net/48q5f4u9/3/
答案 0 :(得分:2)
首先重置:
* {margin:0;padding:0}
在100%
代码和主要容器body, html
上使用.container
后:
html,body, .container {
height:100%;
}
然后使用calc()
设置尺寸,例如:
.main{
height: calc(100% - 50px);
width: calc(100% - 200px);
overflow: hidden;
background-color: #aabbcc;
}
答案 1 :(得分:0)
.nav{
width: 200px;
float: left;
background-color: #ccc;
}
链接到Fiddle
这是使内容动态化的一种简单方法,将float设置为侧边栏。 但我认为你需要做出更多改变,在页面底部设置页脚(页脚将始终位于页面的末尾),这样你就可以使事物看起来更具吸引力。
希望这有帮助,让我知道;)
答案 2 :(得分:0)
你可以使用粘性页脚和绝对和边框用于主要和导航,并使用填充,因为它们有一个定义的大小:
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
.main, .nav {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.container {
min-height: 100%;
margin-bottom: -50px;
overflow: hidden;
}
.nav {
position: absolute;
left: 0;
padding-bottom: 50px;
top: 0;
width:200px;
height: 100%;
background: #1abc9c;
z-index: 1;
}
.main {
top: 0;
width: 100%;
height: 100%;
padding: 0 0 50px 200px;
background: #3498db;
height: 100%;
position: absolute;
left: 0;
}
.container:after {
content: "";
display: block;
}
.footer, .container:after {
height: 50px;
}
.footer {
position: relative;
background-color: #e74c3c;
z-index: 2;
width: 100%;
}
&#13;
<div class="container">
<div class="nav">
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
</div>
<div class="main">
Text...
</div>
</div>
<div class="footer">
Footer
</div>
&#13;