2015-11-15 47 views
1

有没有办法实现以下目标?使用flexbox全部或全部包装

从单行上的三个项目开始,如果总宽度超过了flex父宽度,则捕捉到列方向。

对于我的特定用例,解决方案的主要限制是我无法使用媒体查询来交换柔性方向,尽管这可能是最容易做的事情。

媒体查询不是一个可行的解决方案这种情况下,因为该组件是独立的,可以放置在各种位置,这将决定容器的宽度独立于浏览器宽度。如果有媒体查询可以基于父容器而不是页面的魔术,那就太棒了,但是到目前为止我还没有看到类似的东西。

在这种fiddle较长的名字第二个div需要被包装成三行,但我可以得到最接近的是两条线。

<div class="container"> 
    <span class="item">Dan Martinez&nbsp;</span> 
    <span class="item">@DanMartinez101&nbsp;</span> 
    <span class="item">an hour ago&nbsp;</span> 
</div> 

<br/> 

<div class="container"> 
    <span class="item">Someone with a really long name&nbsp;</span> 
    <span class="item">@AndAReallyLongHandle&nbsp;</span> 
    <span class="item">about three million years ago&nbsp;</span> 
</div> 

.container { 
    display: flex; 
    flex-wrap: wrap; 
    width: 400px; 
    background-color: 'red'; 
} 

.item { 
    white-space: nowrap; 
    flex: 0 1 auto; 
} 
+1

这是要去要求JS。 –

+0

* ...媒体查询不能用于交换灵活方向... *不正确。通过媒体查询可以轻松改变'flex-direction'。 –

+1

@Michael_B对不起,没有更清楚地说明这个约束。我的意思是,虽然这将工作,并且是最简单的解决方案,但我无法在当前的应用程序中这样做。我会更新我的问题,以便更清楚。 –

回答