我想要 #sidebar
填写 #main
垂直(和匹配 #content
的高度)。我该怎么做呢?
这是我的jsFiddle。
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>
如果没有明确设置div高度,这有点棘手。 这是一个解决方案。
div是一个容器。它将占据其内容占据的高度。实现你想要的唯一方法是在px中使用高度。如果你不关心语义标记(我建议你应该),那么septemberbrain的链接是一个很好的技巧。
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;
}
}
从高处移除高度 #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;
}
见JSFiddle。