<style type='text/css'>
.menu {
float: left;
min-width: 20%; /* fix this to your happiness */
}
.main:after {
content: "."; /* foo */
display: block;
visibility: hidden;
clear: both;
}
.main {
width: 100%;
}
.menu + .main {
float: left; /* you can also make this right (play with it a bit ) */
width: 80%; /* work this out with happiness above !(see notes below) */
}
.menu[display=hidden] + .main {
width: 100%;
}
</style>
<div class='container'>
<div class='menu'>
Menu Content
</div>
<div class='main'>
Main content
</div>
</div>
ПРИМЕЧАНИЯ:
ОК, так что вам нужно беспокоиться о следующем: если вы поместите какие-либо границы вокруг этих элементов, вам придется немного уменьшить ширину, чтобы учесть ширину границ.
Хороший способ на самом деле обеспечить надлежащий внешний вид - это обращаться с ними как с классами контейнеров и помещать в них фактические элементы содержимого.
.main: after {} должен заставить .main плавать должным образом в случае, если вы содержите это внутри другого div, а затем у вас будет содержимое ниже. :: After вставляет туда блок, который гарантирует, что вам не нужно будет помнить, чтобы поместить «clear: both» в стиль для следующего элемента блока (который, вероятно, вам нужен ниже этого набора)
Надеюсь, это поможет.