如何排除 flexbox 包装中的第一项?

Posted

技术标签:

【中文标题】如何排除 flexbox 包装中的第一项?【英文标题】:How to exclude the first item in a flexbox wrap? 【发布时间】:2016-07-27 23:20:02 【问题描述】:

除了重新排序标记之外,还有其他方法可以排除 flex wrap 中的第一项吗?

<div class="container">    
  <div id="tobeexcluded">abc</div>
  <div class="flexitem">content</div>
  <div class="flexitem">content</div>
  <div class="flexitem">content</div>
</div>

编辑: 我已经试过了

:not(:first-child)

还有

:not(#tobeexcluded)

但它不起作用。这是实际的类构造,它是一个 Drupal 视图:

.view-id-reference_list .view-content:not(:first-child) 
display: flex
flex-flow: wrap

小提琴:https://jsfiddle.net/m62090za/4/

这就是我想要的:https://jsfiddle.net/Lxhpwqzn/1/ 但不更改标记。

【问题讨论】:

css not:first-child selector的可能重复 你是认真的还是困倦的?这与您提供的链接完全不同 您可以使用 css #tobeexcluded display: none 排除它。 我不想隐藏它,它应该从 flexbox wrap 中移除。 正如您在小提琴中看到的,当我将 :not(:first-child) 添加到 div 时,flexbox wrap 不再起作用。 filter-div 应该在 flex-flow 之上... 【参考方案1】:

除了重新排序标记之外,还有其他方法可以排除 flex wrap 中的第一项吗?

经过一些初步的混淆,我们现在明白实际上需要将内容包装在 第一个 div 之后。

显然,实现这一点的最简单方法是让第一个 div 与父级 100% 宽。

.view-container .view-content 
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;

.filterbox 
  flex: 0 0 100%;
<div class="view-container">
  <div class="view-content">
    <div class="filterbox">FILTER</div>
    <div class="flex-item">
      Flex-ITEM
    </div>
    <div class="flex-item">
      Flex-ITEM
    </div>
    <div class="flex-item">
      Flex-ITEM
    </div>
  </div>
</div>

【讨论】:

我读到这个,以为它不是我想要的(因为它很简单),关闭标签,意识到它的美丽,然后再次打开它。

以上是关于如何排除 flexbox 包装中的第一项?的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox 中的第一个孩子全角

css 这将建立主轴,从而定义Flex项目放置在Flex容器中的方向。 Flexbox是(除了可选的包装

在IE中,Flex包装器使用flexbox获得100%宽度

CSS:flexbox的第一个孩子向左并休息到中心[重复]

CSS flex:行选择器中的最后一项和第一项

理解flexbox