我想使用flex-basis属性在元素之间创建间隔符。这样做将允许我保持元素之间的空间,而不管“flex-direction`”。
这在使用flex-direction: column时非常有效,但在使用flex-direction: row (默认值)时,行中的最后一项会溢出并被裁剪。

完整的工作示例如下:https://codepen.io/anon/pen/NVxaoy
input {
margin: 0;
}
.field {
display: flex;
}
.field.stacked {
flex-flow: column;
}
.label {
display: flex;
}
.spacer.x1 {
background: green;
flex: 0 0 8px;
}
.spacer.x2 {
background: red;
flex: 0 0 16px;
}<h1>Horizontal</h1>
<div class="field">
<label class="label">
<input type="checkbox">
<div class="spacer x1"></div>
<div class="text">Apple</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Banana</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Orange</div>
</label>
</div>
<h1>Stacked</h1>
<div class="field stacked">
<label class="label">
<input type="checkbox">
<div class="spacer x1"></div>
<div class="text">Apple</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Banana</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Orange</div>
</label>
</div>
对此有解决方案或解决方法吗?
发布于 2019-05-10 00:06:03
老实说,我不确定为什么会发生这种裁剪,但您可以通过更改间隔符来解决这个问题,使用width而不是flex
input { margin: 0 }
.field {
display: flex;
}
.field.stacked {
flex-flow: column;
}
.label {
display: flex;
}
.spacer.x1 {
background: green;
width: 8px;
}
.spacer.x2 {
background: red;
flex: 0 0 16px;
}<h1>Horizontal</h1>
<div class="field">
<label class="label">
<input type="checkbox">
<div class="spacer x1"></div>
<div class="text">Apple</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Banana</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Orange</div>
</label>
</div>
<h1>Stacked</h1>
<div class="field stacked">
<label class="label">
<input type="checkbox">
<div class="spacer x1"></div>
<div class="text">Apple</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Banana</div>
</label>
<div class="spacer x2"></div>
<label class="label">
<input type="checkbox" />
<div class="spacer x1"></div>
<div class="text">Orange</div>
</label>
</div>
https://stackoverflow.com/questions/56063016
复制相似问题