当前位置: 首页 > 知识库问答 >
问题:

在柔性容器中填充剩余高度或宽度

汤飞
2023-03-14

我有两个div并排放在一个flexbox中。右手边的宽度应该总是一样的,我希望左手边的那个能抓住剩下的空间。但它不会,除非我特别设置它的宽度。

所以目前,它被设置为96%,看起来不错,直到你真的挤压屏幕——然后右手div有点缺乏它需要的空间。

我想我可以让它保持原样,但感觉不对——就像有一种方式可以说:

右边的总是一样的你在左边你得到了剩下的一切

.ar-course-nav {
  cursor: pointer;
  padding: 8px 12px 8px 12px;
  border-radius: 8px;
}
.ar-course-nav:hover {
  background-color: rgba(0, 0, 0, 0.1);
}
<br/>
<br/>
<div class="ar-course-nav" style="display:flex; justify-content:space-between;">
  <div style="width:96%;">
    <div style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
      <strong title="Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!">
                Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!
            </strong>
    </div>
    <div style="width:100%; display:flex; justify-content:space-between;">
      <div style="color:#555555; margin-right:8px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;" title="A really really really really really really really really really really really long department name">
        A really really really really really really really really really really really long department name
      </div>
      <div style="color:#555555; text-align:right; white-space:nowrap;">
        Created: 21 September 2016
      </div>
    </div>
  </div>
  <div style="margin-left:8px;">
    <strong>&gt;</strong>
  </div>
</div>

共有2个答案

饶德元
2023-03-14

基本上,我试图让我的代码在“行”上有一个中间部分,以便自动调整到两侧的内容(在我的例子中,是一个虚线分隔符)。正如@Michael_B所建议的,关键是在行容器上使用display:flex,至少确保行的中间容器的flex grow值至少比外部容器高1(如果外部容器没有应用任何flex-grow属性,则中间容器只需要1个用于flex-grow)。

这里有一张我试图做的图片和我如何解决它的示例代码。

.row {
  background: lightgray;
  height: 30px;
  width: 100%;
  display: flex;
  align-items:flex-end;
  margin-top:5px;
}
.left {
  background:lightblue;
}
.separator{
  flex-grow:1;
  border-bottom:dotted 2px black;
}
.right {
  background:coral;
}
<div class="row">
  <div class="left">Left</div>
  <div class="separator"></div>
  <div class="right">Right With Text</div>
</div>
<div class="row">
  <div class="left">Left With More Text</div>
  <div class="separator"></div>
  <div class="right">Right</div>
</div>
<div class="row">
  <div class="left">Left With Text</div>
  <div class="separator"></div>
  <div class="right">Right With More Text</div>
</div>
狄晟睿
2023-03-14

使用flex-增长属性使flex项占用主轴上的可用空间。

此属性将尽可能扩展项目,根据动态环境调整长度,如屏幕大小调整或添加/删除其他项目。

一个常见的例子是flex-增长: 1,或者使用速记属性,flex: 1

因此,在div上使用flex:1而不是width:96%

你写道:

所以目前,它被设置为96%,看起来不错,直到你真的挤压屏幕——然后右手div有点缺乏它需要的空间。

固定宽度div的挤压与另一个flex属性相关:flex-shrink

默认情况下,flex项设置为flex-shrink:1,这使它们能够收缩以防止容器溢出。

要禁用此功能,请使用flex-shrink:0。

有关更多详细信息,请参见此处答案中的“弹性收缩系数”部分:

  • 柔性基础和宽度之间有什么区别?

在此处了解有关沿主轴的柔性对齐的更多信息:

  • 在CSS Flexbox中,为什么没有证明项和证明自我属性?

在此处了解有关沿横轴的柔性对齐的更多信息:

  • flex wrap如何与align self、align items和align content一起工作
 类似资料:
  • 问题内容: 我有这个标题栏。 我需要searchBar来填补div中剩余的空白。我该怎么做? 这是我的CSS 问题答案: 您可以使用CSS表格单元格实现此布局。 稍微修改您的HTML,如下所示: 只需删除两个元素周围的wrapper 元素即可。 应用以下CSS: 适用于并给它100%的宽度。 对于,,,适用。 对于,将宽度设置为90%,这将迫使所有其他元素计算出缩小以适合的宽度,搜索栏将展开以填充

  • 问题内容: 如何使div填充剩余宽度? 我如何才能填满其余部分? 问题答案: 试试这样的事情: div自然会占用其容器的100%宽度,因此无需显式设置此宽度。通过添加与两侧div相同的左/右页边距,它自己的内容被强制置于它们之间。 请注意,“中间格”云 后 的HTML“正确的div”

  • 问题内容: 我想要一个两列的div布局,其中每个可以具有可变的宽度,例如 我希望’view’div扩展到’tree’div填充所需空间后可用的整个宽度。 目前,我的“视图” div已调整为包含它的内容的大小,如果两个div都占据整个高度,那也会很好。 问题答案: 这个问题的解决其实很容易,但不是在 所有 明显。您必须触发一种称为“块格式设置上下文”(BFC)的东西,它以特定的方式与浮点数交互。 只

  • 问题内容: +--------------------+ | | | | | | | | | 1 | | | | | | | | | +--------------------+ | | | | | | | | | 2 | | | | | | | | | +--------------------+ 如上所示的(1)的内容是未知的,因为它在动态生成的页面中可能会增加或减少。如上所示,第二个div(

  • 问题内容: 我正在寻找一种将2个div作为列的方法,其中右侧的div具有固定的宽度,左侧的div填充剩余空间。 有谁碰巧知道是否可以做到这一点? 我的尝试 (在block1下面提供了block2) : 问题答案: 您可以这样做: HTML: CSS:

  • 问题内容: 我正在一个Web应用程序上工作,我希望其中的内容能填满整个屏幕的高度。 该页面具有标题,其中包含徽标和帐户信息。这可以是任意高度。我希望内容div将页面的其余部分填充到底部。 我有一个标题和一个内容。目前,我正在使用表格进行布局,如下所示: CSS和HTML 页面的整个高度已填满,不需要滚动。 对于content div中的任何内容,设置将其放在标题的正下方。有时,内容将是一个实际表,