所以,问题来了:
我用 flexbox 做了一行。它有 2 列:如果有足够的空间,可以在
|some dynamic text | [dynamic tags]|
哪里列出标签列表,或者当没有足够的空间容纳所有标签时,可以是单个图标。[dynamic tags]
我目前的方法是使用两个项目制作一个内联线。如果没有空格,一部分转到第二行,用 隐藏overflow: hidden
。
这是一个例子:http: //jsbin.com/IVUyATO/13/edit
在我想让第一列和第二列具有相同的扩展因子之前,它工作得非常好。所以他们可以平等地占据空间。像这样:http: //jsbin.com/IVUyATO/15/edit
但这是我现在需要解决的问题 - 当标签进入第二行时,它们仍然在第二列中获得空间,因此第一个不使用可见的空白空间。
也许有完全不同的方法,我错过了。
这是html正文
<div class="line">
<div class="description-container">
something 2 something 3 something 4
</div>
<div class="tags-container">
<div class="more-tags">more tags</div>
<div class="tags">
<span>tag1</span>
<span>tag2</span>
<span>tag3</span>
<span>tag4</span>
<span>tag5</span>
<span>tag4</span>
<span>tag5</span>
<span>tag6</span>
</div>
</div>
<div class="right-container"></div>
</div>
body{
width: 100%;
padding:0;
margin:0;
background: white;
}
.line{
display: flex;
height: 50px;
border-top:1px solid lightgray;
border-bottom:1px solid lightgray;
}
.line > div{
flex: 0 0 auto;
}
.right-container{
width: 100px;
background: rgba(100,0,0,0.1);
}
.line .tags-container{
flex: 1 1 auto;
background: magenta;
//TODO - Uncomment next line to see final effect
/* overflow:hidden; */
.more-tags{
float:right;
background: green;
height: 50px;
width: 80px;
}
.tags{
float:right;
background: yellow;
white-space: nowrap;
height: 50px;
margin-right:-80px;
.tag{
display:inline-block;
border-radius: 4px;
}
}
}
.line .description-container{
background: rgba(0,0,200,0.1);
}
更新
我想我明白我试图解决另一个问题,并且我已经知道如何描述它。就是这样 - 只有当它比容器的一半宽时才使用 flexbox 收缩列