如何使两个元素的宽度和边距相同,但要根据较大的文本展开

问题描述 投票:0回答:2

这是我要实现的目标:

  • 容器中的两个元素总是占据一半的空间减去它们之间的间隙。
  • [当一个元素的文本内容大于空格的一半时,它将扩展并占用更多空间。

示例:enter image description here

我尝试过的事情:

.container {
  display: flex;
  padding: 20px;
  justify-content: space-between;
  border: 1px solid black;
  width: 400px;
}

.block {
  flex: 1 1 calc(50% - 8px);
  border: 1px dashed black;
  padding: 5px 10px;
  text-align: center;
  white-space: nowrap;
  min-width:0 ;
}

.block:first-child {
 margin-right: 16px;
}
<div class="container">
  <div class="block">Lorem ipsum ffffffff ffffffffff</div>
  <div class="block">Lorem ipsum</div>
</div>

文本不会推送flex容器,有没有办法实现这一目标?

html css
2个回答
2
投票

不知道这是否正是您想要的,但可能是display: inline-flexflex-grow: 1却没有在.block上施加特定宽度。

请检查:

.container {
  display: flex;
  padding: 20px;
  justify-content: space-between;
  border: 1px solid black;
  width: 400px;
}

.block {
  display: inline-flex;
  flex-grow: 1;
  flex-shrink: 1;
  border: 1px dashed black;
  padding: 5px 10px;
  justify-content: center;
  flex-wrap: nowrap;
  min-width: 0;
}

.block:first-child {
  margin-right: 16px;
}
<div class="container">
  <div class="block">Lorem ipsum</div>
  <div class="block">Lorem ipsum</div>
</div>

<div class="container">
  <div class="block">Lorem ipsum ffffffff ffffffffff</div>
  <div class="block">Lorem ipsum</div>
</div>

但是,当然,如果其中一个块的文本太大,它将分解到下一行,除非您应用某种省略号


0
投票

每个弹性项目将占用所需的空间。

#container {
  width: 400px;
  padding: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1px solid tomato;
}

.flex-block {
  padding: 10px;
  border: 1px solid purple;
  margin: 5px;
}
<div id="container">
  <div class="flex-block">lorem ipsum dolar something</div>
  <div class="flex-block">some more lorem ipsum but this time make it longer</div>
</div>

在此示例中,如果要将弹性商品的宽度限制为最大宽度(例如50%),则可以添加flex:1;对项目以及align-self:拉伸;这样,无论内部内容如何,​​每个项目都变为相同的高度

© www.soinside.com 2019 - 2024. All rights reserved.