首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用flex-basis时Flex项溢出

使用flex-basis时Flex项溢出
EN

Stack Overflow用户
提问于 2019-05-09 23:36:53
回答 1查看 260关注 0票数 3

我想使用flex-basis属性在元素之间创建间隔符。这样做将允许我保持元素之间的空间,而不管“flex-direction`”。

这在使用flex-direction: column时非常有效,但在使用flex-direction: row (默认值)时,行中的最后一项会溢出并被裁剪。

完整的工作示例如下:https://codepen.io/anon/pen/NVxaoy

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
<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>

对此有解决方案或解决方法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-10 00:06:03

老实说,我不确定为什么会发生这种裁剪,但您可以通过更改间隔符来解决这个问题,使用width而不是flex

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
<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>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56063016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档