我正在使用以下CSS来获得快速的两列布局。左侧的div
具有静态宽度,右侧的div
填充剩余的可用空间:
.container {
display: flex;
}
.left-column {
width: 100px;
background-color: red;
}
.right-column {
width: calc(100% - 100px);
background-color: cyan;
}
<div class="container">
<div class="left-column">
Lorum ipsum
</div>
<div class="right-column">
Lorum ipsum
</div>
</div>
这就像我期望的那样。不过,我没有使用flex
属性在我的任何一个孩子div
中完成此效果。这是完成我的双列布局的惯用,干净的方法,还是应该避免在不使用更多Flexbox功能的情况下使用display: flex
?
答案 0 :(得分:4)
在flex中执行此操作的更惯用的方法是使用flex-basis
属性而不是宽度,并且您可以使用flex-grow
而不是从100%
移除一些宽度,这样就可以消耗可用空间。
.container {
display: flex;
}
.left-column {
/*width: 100px;*/
background-color: red;
flex-basis: 100px;
}
.right-column {
/*width: calc(100% - 100px);*/
background-color: cyan;
flex-grow: 1;
}
&#13;
<div class="container">
<div class="left-column">
Lorum ipsum
</div>
<div class="right-column">
Lorum ipsum
</div>
</div>
&#13;
答案 1 :(得分:3)
您不需要在.right-column上定义固定宽度。您可以像使用flexbox一样动态制作它。
.right-column {flex: 1;background-color: cyan;}
现在它的工作原理相同。但不是在这里定义固定的100px {calc(100% - 100px)}。你只定义flex:1,它将占用宽度的其余部分。
Thannks,
答案 2 :(得分:2)
以下是一个示例:https://jsfiddle.net/sheriffderek/bo0ruwvm/
你可以使用静态宽度...有时候这是非常的 - 但我会使用flex-basis和grow / shrink属性来描述布局 - 而且总是使用
width: 100%; max-width: 400px;
等一般模块和布局的情况。静态高度和宽度不是bueno。
<section class='container'>
<div class='side one'>
one(left)
</div>
<div class='side two'>
two(right)
</div>
</section>
.container {
display: flex;
border: 1px solid red;
}
.one {
flex-basis: 100px; /* if possible be this width */
/* you COULD just say width: 100px... */
flex-shink: 0; /* if you DONT want it to ever shrink to fit */
/* not nessesary in most cases */
background: lightgreen;
}
.two {
flex-grow: 1; /* fill available space */
background: cyan;
}