我有一个包含链接和标题的父div(.tags
)。
使用display: flex;
将父div设置为flex-wrap: wrap;
。
我希望链接元素能够突破新行,在包装效果发生时清除标题。
我已尝试在标题上使用flex-grow: 1
,但这使得它始终将链接推送到屏幕右侧,这不是我所追求的。
我已添加了目前为止的代码,但这里有Codepen
的链接我想要实现的目标:
默认 - 屏幕的宽度足够大,所以没有任何内容,一切都在一行上>
Wrapped - 屏幕宽度较小,已经发生换行 - 标题现在有100%的宽度,链接清除它>
请注意,链接数量可能会有所不同。
.container {
background: lightgray;
width: 100%;
}
.tags {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-start;
}
.tags span {
margin: 1rem;
}
.tags .tag {
margin: 0.2rem;
padding: 0.2rem;
background: dodgerblue;
color: white;
}
<div class="container">
<div class="tags">
<span>Tagged in:</span>
<a class="tag" href="#">capabilities</a>
<a class="tag" href="#">sales</a>
</div>
</div>
答案 0 :(得分:3)
是的,结构发生了变化。
使用flex:1
将标记包装在自己的div中。然后 it 将自动展开,当换行发生时,标签将下降到第二行。
.container {
background: lightgray;
width: 100%;
}
.tags {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: start;
-webkit-justify-content: flex-start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.tags span {
margin: 0 1rem;
}
.tags .tag-wrap {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
}
.tags .tag {
margin: 0.2rem;
padding: 0.2rem;
background: dodgerblue;
color: white;
}
&#13;
<div class="container">
<div class="tags">
<span>Tagged in:</span>
<div class="tag-wrap">
<a class="tag" href="#">capabilities</a>
<a class="tag" href="#">sales</a>
</div>
</div>
</div>
&#13;
答案 1 :(得分:2)
flex增长1,flex收缩0,flex basis auto:
span {
flex:1 0 auto;
}