css 为换行的Flexbox项目提供垂直间距

0yg35tkg  于 2022-12-05  发布在  其他
关注(0)|答案(5)|浏览(158)

我最近第一次玩Flexbox,总的来说,它绝对令人惊讶。但是我最近遇到了一个问题,我似乎不能给予正在 Package 的Flex项目任何垂直间距。
我试过使用:

align-content: space-between;

但这似乎没有任何作用。从我所做的阅读来看,这似乎只有在我的flex容器比其中包含的元素高的情况下才起作用(对吗?)如果是这样,那么我是否不必为我的flex-container设置一个高度,这似乎违背了使用flexbox的目的?
唯一的方法,我能想到的,使这项工作将是给予底部利润的元素内,但再次这似乎击败了目的。
希望我错过了一些相当明显的东西-这里有一个链接到一个codepen:http://codepen.io/lordchancellor/pen/pgMEPz
另外,这是我的代码:
于飞:

<div class="container">
   <div class="col-sm-12">
     <h1>Flexbox Wrapping</h1>

     <div class="flexContainer">
       <div class="flexLabel">This is a flex label</div>
                    
       <a class="btn btn-primary">Button 1</a>
       <a class="btn btn-warning">Button 2</a>
       <a class="btn btn-success">Button 3</a>
     </div>
   </div>
 </div>

CSS:

.flexContainer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  align-content: space-between;
  justify-content: center;
}
.flexContainer .flexLabel {
  flex-basis: 150px;
  flex-shrink: 0;
}

编辑-只是要在这里添加一点更多的细节,因为我不确定我把它足够好。
在我的大型项目中,我有一些块级元素,它们使用Flexbox排列在一行中。但是,需要有一些响应,因为用户可能会缩小屏幕宽度。此时,我希望我的元素开始堆叠(因此换行)。但是,当元素开始堆叠时,它们都垂直接触,在那里我希望有间距。
它开始看起来像顶部和底部边距可能是唯一的方法来解决这个问题-然而,我想知道是否有一个以flexbox为中心的方法来实现这一点。

xt0899hw

xt0899hw1#

我有一个类似的问题,我用下面的 * 黑客 * 来解决这个问题。

/* add a negative top-margin to the flex container */
.flexContainer {
        /* ... your existing flex container styles here */
    margin: -10px 0 0 0;
} 
    /* add a corresponding positive top margin to all flex items (all direct children of the flex container) */
.flexContainer > * {
    margin-top: 10px;
}

对于弹性项目的顶行,正负边距抵消,对于后续行,它将添加行之间的边距(在本例中,行之间为10px)。

  • 虽然不够优雅,但却能完成任务 *
lskq00tm

lskq00tm2#

如果通过应用宽度强制换行,则可以像通常一样使用边距,而无需设置高度。
第一个

lnvxswe2

lnvxswe23#

行间距可以解决您的问题

.flexbox {
    display: flex;
    column-gap: 10px;
    row-gap: 10px
}
yiytaume

yiytaume4#

这是因为您的flex内容没有一个高度来计算间距,所以目前,flex容器尽可能小。添加一个高度,它应该工作。

gab6jxml

gab6jxml5#

另一个很有技巧的解决方案是给项目一个下边框:

border-bottom: 10px solid transparent;

相关问题