【问题标题】:Controlling the amount of space in justify-content: space-between控制 justify-content: space-between 中的空间量
【发布时间】:2019-10-30 23:15:20
【问题描述】:

我想知道如何证明在 justify-content: space-between 中允许有多少空间用于 flexbox。

目前,我的物品是隔开的,但它们之间的空间太大,我希望它们之间有一点空间,这样它们就可以连续放置在中间的某个地方。

下面的 sn-p 有望阐明我正在努力解决的问题。

如果您需要我进一步澄清,请告诉我。谢谢!

#qwrapper {
  display: flex;
  height: 100%;
  width: 100%;
  align-items: center;
  justify-content: center;
}
.row {
  flex: 0 auto;
  height: 100px;
  margin: 0;
}
#lighticon {
  padding-bottom: 30px;
}
@media (max-width: 800px) {
  #qwrapper {
    flex-direction: column;
    align-items: center;
  }
}
@media screen and (max-width: 480px) {
  #qwrapper {
    flex-wrap: wrap;
  }
  .row {}
}
@media only screen and (min-width: 760px) {
  #qwrapper {
    justify-content: space-between;
    margin: 10px;
  }
  #lighticon {
    position: relative;
    margin-left: 100px;
  }
}
<div id="qwrapper">

  <h3 id="michelle" class="row">"She always thinks of her clients."
<br>
   
</h3>

  <img src="https://cdn4.iconfinder.com/data/icons/black-icon-social-media/512/099310-feedburner-logo.png" class="row" alt="" id="lighticon" />

  <h3 id="jerry" class="row">"Very smart, creative person, problem solver."
<br>


</h3>
</div>

【问题讨论】:

  • 试试 justify-content: space around;弹性项目的左边距。
  • 也许在 flex 父节点上使用 justify-content: center; 并在 img 上使用 margin: 0 50px;

标签: html css flexbox


【解决方案1】:

justify-content 属性使用行上的可用空间来定位弹性项目。

使用justify-content: space-between,所有可用空间都放在第一个和最后一个项目之间,将两个项目推到容器的相对边缘。

你写的:

我想知道如何证明在 justify-content: space-between 中允许多少空间用于 flexbox。

在行方向使用space-between,您必须控制弹性容器的宽度。因此,如果您希望弹性项目之间的空间更小,则需要缩短容器的宽度。

或者你可以使用justify-content: space-around

但是,这些解决方案并不理想。

解决这个问题的正确方法是使用边距。

你写的:

目前,我的物品是隔开的,但它们之间的空间太大了,我希望它们之间有一点空间,这样它们就可以连续放置在中间的某个地方。

使用justify-content: center,然后使用边距将它们分开。

【讨论】:

    【解决方案2】:

    我的解决方案是:

    • 将虚拟的空 div 置于指定的最大高度之间
    • 将 space-between 更改为 flex-start
    • 将内容块设置为 nog​​row
    • 设置虚拟 div 增长

    然后空间增长到指定的最大值。

    【讨论】:

    • 感谢您的提示。我只是制作了一个
      ,当它们水平时,它可以让我控制项目之间的间距。当 flex-wrap 被触发时,虚拟垫片什么也不做,因为它的高度是 0px,或者我也可以给它设置一些高度。工作正常,不需要其他任何东西。
    • 写完这篇文章后,我还发现了 margin-left 或 margin-right: auto 对弹性项目的影响。它是一种锚定事物的受支持方式。当然取决于情况,但可以是一个超级简单的解决方案,让一些东西动起来!
    • 这可能不适用于响应式设计。
    【解决方案3】:

    如果你想要space-between,使用边距的方法不是一个通用的解决方案,因为它会在所有弹性元素上设置边距,也会在行或列的第一个和最后一个元素上设置一个边距。使用 :first-child / :last-child/ :nth-child() 选择器在设置 flex-wrap: wrap 时没有帮助,因为您永远无法判断哪些元素将在换行的行或列上排在第一个和最后一个。

    :wrapped 这样的选择器会有所帮助,但遗憾的是它不存在。

    所以我的结论是,当您真正想要释放 flexbox 的灵活性和响应能力时,您无法控制边距……错过了我想说的规范的机会。

    【讨论】:

      【解决方案4】:

      我发现自己为所有框添加了右边距(在本例中为三个)

      .three {
          margin-right: 2%
      }
      

      然后去掉它,使最后一个框对齐

      .three:nth-child(3) {
          margin-right: 0%;
      }
      

      但每次我这样做时,我都会想“必须有更好的方法,在 flex-box 中加入一些东西……这可行,但似乎是一种解决方法?

      【讨论】:

      • 我们现在仍然处于这种情况吗?
      【解决方案5】:

      以下组合对我有用。 (最初由@T04435提到)

      justify-content: space-around; flex-items: margin-left;

      【讨论】:

      • 有趣且与众不同。
      • 弹性项目:左边距; Chrome 不支持,可能是伪代码?
      • chrome 不支持左边距。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2022-12-04
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多