css 如何在一行中设置2个flex项,并且一行中的最后一项展开为全宽?

o2g1uqev  于 2022-11-26  发布在  其他
关注(0)|答案(3)|浏览(394)

我需要一个css灵活的方式来设置每行2个项目,并在每行的第二个项目,以自动扩展宽度。
我尝试了很多方法,比如为每行中的第二个项目设置margin-right:auto,但都不起作用。
这是我现在所拥有的:
第一个
Flex项目内的文字不应换行。
下面是我需要的结果:

vwkv1x7d

vwkv1x7d1#

此布局不能用于Flex,因为每一行都独立于其他行,并且不能定义列宽。
但是,使用网格的解决方案很简单,因为可以定义列宽。
第一个
在上面的代码中,grid-template-columns定义了两列。
第一个设置为width min-content,这意味着它将调整为可能的最小宽度。
第二个设置为1fr,这意味着它将占用所有剩余空间。

yptwkmov

yptwkmov2#

已更新,文本不换行

这里有一个快速的例子,它有望达到预期的结果。
它在发布的HTML结构上工作,只是在<style>中对CSS做了一些更改。
示例:(请使用下面的按钮查看实况)

<style>
div {
  /* 👇 edit left span width here */
  --left-span-width: 150px;
  /* 👇 edit gap of span here */
  --span-gap: 2px;

  display: flex;
  flex-wrap: wrap;
  gap: var(--span-gap);
}

div span:nth-child(odd) {
  width: calc(var(--left-span-width) - var(--span-gap));
  background: red;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}

div span:nth-child(even) {
  flex: 1 1 calc(100% - var(--left-span-width));
  background: yellow;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
</style>
<div>
  <span>aaa</span>
  <span>bbbbbb</span>
  <span>ccccccccc ccccccccc ccccccccc</span>
  <span>ddd</span>
  <span>eee</span>
  <span>fff</span>
</div>

相关问题