我正在尝试布局一些div
元素。 div
元素包含select
元素和三个按钮。虽然我不想为按钮设置特定大小,但我希望select
列表完全占用剩余空间。
正如你所看到的,我有点让列表伸展但没有间距。我试图通过CSS强制填充没有运气。我当然错过了一些东西。
这是代码:
#presets {
display: flex;
padding: 3px;
margin: auto;
}
#presets select {
width: 100%;
}
#presets button {
padding-right: 5px;
}

<div id="presets">
<select>
<optgroup ng-repeat="item in qo.presets">
<option>{{item.name}}</option>
</optgroup>
</select>
<button>RM</button>
<button>ED</button>
<button>AD</button>
</div>
&#13;
提前感谢您的提示,
答案 0 :(得分:0)
您可以使用margin
代替padding
来使用以下解决方案:
#presets {
display: flex;
padding: 3px;
margin: auto;
}
#presets select {
margin-right:5px;
width: 100%;
}
#presets button {
margin-right:5px;
}
#presets button:last-child {
margin-right: 0;
}
&#13;
<div id="presets">
<select>
<optgroup ng-repeat="item in qo.presets">
<option>{{item.name}}</option>
</optgroup>
</select>
<button>RM</button>
<button>ED</button>
<button>AD</button>
</div>
&#13;
答案 1 :(得分:0)
我正在尝试布局一些
div
元素。div
元素托管一个 选择元素和三个按钮。虽然我不想设置具体的 按钮的大小,我希望选择列表完全占据剩余的 空间。
这正是flexbox设计用来处理的flex-grow
属性。
flex-grow
属性指定Flex项目应占用的容器中剩余空间的数量。
只需将flex-grow: 1
应用于select
元素,即可占用所有可用空间。
#presets select {
flex-grow: 1;
/* width: 100%; REMOVE, not necessary */
}
正如你所看到的,我可以让列表伸展但没有间距。
只需为所有弹性项目指定保证金:
#presets > * {
margin: 5px;
padding: 5px;
}
一些注意事项:
flex-grow
的工作方式,如果您已将flex-grow: 1
应用于所有弹性项目,则会在每个项目之间均匀分配剩余空间。请参阅demo。
您可以使用flex: 1
代替flex-grow: 1
。通过此简写属性,您可以在一个声明中指定flex-grow
,flex-shrink
和flex-basis
属性。请参阅demo。