我正试图让#sidebar
垂直填充#main
(并匹配#content
的高度)。我该怎么做?
CSS:
#main {
border: solid green 2px;
}
#sidebar {
background-color: red;
width: 20%;
overflow: auto;
float: left;
height: 100%;
}
#content {
background-color: orange;
width: 80%;
overflow: auto;
float: left;
height: 100%;
}
#main-footer {
clear: both;
}
和html:
<div id="main">
<div id="sidebar">
<ul>
<li>abc</li>
<li>def</li>
</ul>
</div>
<div id="content">
defsdfasdfasd fjasd;lf jasdl;fkjasd; lfjas; lfkjadsfl;sdajfs dlfjsdlfksjflaskfjsdaljfasdl asdfsad sfljsf sadfjsldfj sakfj;alsdfj dfsjsadfl;j asdlfjl;asdfj
defsdfasdfasd fjasd;lf jasdl;fkjasd; lfjas; lfkjadsfl;sdajfs dlfjsdlfksjflaskfjsdaljfasdl asdfsad sfljsf sadfjsldfj sakfj;alsdfj dfsjsadfl;j asdlfjl;asdfj
</div>
<div id="main-footer">
</div>
</div>
答案 0 :(得分:11)
没有明确设置div高度,这有点棘手。 Here is one solution
答案 1 :(得分:3)
div是一个容器。它将占据其内容占据的高度。实现你想要的唯一方法是在px中使用高度。如果你不关心语义标记(我建议你应该),那么septemberbrain的链接是一个很好的技巧。
答案 2 :(得分:3)
2017解决方案: 对我来说,它适用于flexbox。如果内容应小于窗口高度,我需要在整个窗口高度上拉伸页面内容。
html,
body{
min-height: 100%;
display: box;
display: flexbox;
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6, BB7 */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10*/
display: -moz-box;
display: flex;
-webkit-box-orient:vertical;
-moz-box-orient: vertical;
box-orient: vertical;
-webkit-box-direction:normal;
-webkit-flex-direction:column;
-ms-flexbox-direction:column;
-ms-flex-direction: column;
flex-direction:column;
}
body{
-webkit-box-flex: 1;
-webkit-flex: 1 1;
-ms-flex: 1 1;
flex: 1 1;
}
#page{
-webkit-box-flex: 100;
-webkit-flex: 100 100;
-ms-flex: 100 100;
flex: 100 100;
}
footer{
-webkit-box-flex: 1;
-webkit-flex: 1 1;
-ms-flex: 1 1;
flex: 1 1;
-ms-flex-preferred-size: 300px;
-webkit-flex-basis: 300px;
flex-basis: 300px;
}
@media only screen and (max-width:500px) {
footer{
-ms-flex-preferred-size: 400px;
-webkit-flex-basis: 400px;
flex-basis: 400px;
}
}
答案 3 :(得分:0)
从#sidebar
和#content
移除高度并将display:flex
添加到#main
应该可以解决问题。
即
#main {
border: solid green 2px;
display: flex;
}
#sidebar {
background-color: red;
width: 20%;
float: left;
}
#content {
background-color: orange;
width: 80%;
float: left;
}