允许 Bootstrap 列在一行中使用未占用的 space 宽度

Allow Bootstrap columns to use unoccupied space width within a row

如果您运行以下代码并将鼠标悬停在呈现的元素上,您会看到 leftmiddle 元素之间有一个未占用的 space :

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<div class="container">
  <div class="row">
    <div class="col-sm-3" id="left">
      <div class="row">
        <div class="col-sm-1">1</div>
        <div class="col-sm-1">2</div>
        <div class="col-sm-1">3</div>
      </div>    
    </div>
    <div class="col-sm-6" id="middle">get me lefter, to the unoccupied space</div>
    <div class="col-sm-3" id="right"></div>
  </div>
</div>

...这是您将看到的内容(紫色是未占用的 space):

是否可以添加 CSS 以稳健地告诉 leftmiddle 使用未占用的 space, 如果存在 ?
另外,Bootstrap 有一些内置的 CSS 吗?

我认为这是因为您定义了将要使用的列 (col-sm-3)。

根据您的约束(不重组 HTML),您可以将 #left div 的 class 修改为 col-sm-auto,它告诉 #left 只占用它需要的 space 这样就没有未使用的 space 和 #middle 可以占用旧的未使用的 space.

<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.1.3/js/bootstrap.min.js"></script>

<div class="container">
  <div class="row">
    <div class="col-sm-auto" id="left">
      <div class="row">
        <div class="col-sm-auto">1</div>
        <div class="col-sm-auto">2</div>
        <div class="col-sm-auto">3</div>
      </div>    
    </div>
    <div class="col-sm-6" id="middle">get me lefter, to the unoccupied space</div>
    <div class="col-sm-3" id="right"></div>
  </div>
</div>

注意项目 1、2 和 3 上的 class col-sm-auto。还要告诉他们使用所需的宽度,而不是定义 12 列中的 1 列,这样就不会出现未使用的 space制作。