【问题标题】:Bootstrap text does not truncate when using flexbox使用 flexbox 时引导文本不会截断
【发布时间】:2020-05-15 11:43:53
【问题描述】:

我正在使用 flexbox 制作 Bootstrap 卡,但无法使用文本截断功能。卡片文本按预期换行,但卡片标题在空间不足时不会截断,而是将内容推送到卡片之外 (see screenshot)。

谁能解释为什么会这样?

<div class="container-fluid">
  <div class="row">
    <div class="col">
      <div class="card d-flex flex-row">
        <a href="#">[Image]</a>
        <div class="card-body d-flex align-items-center">
          <div class="flex-grow-1">
            <a href="#"><h5 class="card-title text-truncate">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</h5></a>
            <div class="card-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</div>
          </div>
          <small class="align-self-baseline text-nowrap">Lorem ipsum</small>
          <div>[Icon]</div>
        </div>
      </div>
    </div>
  </div>
</div>

See example on jsfiddle

【问题讨论】:

    标签: html bootstrap-4 flexbox truncate ellipsis


    【解决方案1】:

    老实说,我不知道这是一个错误还是一个功能,但似乎flexbox and text truncation don't play well together

    没有这个(最小宽度),包含其他文本元素的 flex 子元素不会缩小到超过这些文本元素的“隐含宽度”。

    在您的特定情况下,我将 min-width: 0 设置为 .card-body.flex-grow-1 类。

    jsfiddle

    【讨论】:

    • 非常感谢。我看到一些帖子提到min-width: 0,但没能成功。两者都需要它,因为与您的链接示例相比,我将文本嵌套了一层?
    • 我的猜测是每个 flex 孩子都需要它。在发布的示例中,.card-body.flex-grow-1 都是弹性子代。 .card-body.card .d-flex 的子代,.flex-grow-1.card-body .d-flex 的子代。所以,如果那个额外的嵌套元素在另一个显示 flex 的元素中,那么是的,你应该也添加 min-width
    • 上帝,谢谢你,经过数小时的研究,你救了我
    【解决方案2】:

    在 flex-grow-1 div 中添加 flex-body:

    <div class="container-fluid">
      <div class="row">
        <div class="col">
          <div class="card d-flex flex-row">
            <a href="#">[Image]</a>
            <div class="card-body d-flex align-items-center">
              <div class="flex-grow-1">
               <div class="flex-body">
                 <a href="#"><h5 class="card-title text-truncate">Lorem ipsum dolor sit amet, consetetur sadipscing elitr</h5></a>
                 <div class="card-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</div>
              </div>
              <small class="align-self-baseline text-nowrap">Lorem ipsum</small>
              <div>[Icon]</div>
            </div>
           </div>
          </div>
        </div>
      </div>
    </div>
    

    【讨论】:

    • 这使得截断工作但将&lt;small&gt; 和图标&lt;div&gt; 放在一个新行上,因为它们不再是内部弹性框的子级。
    • 显示:内联它们/在长文本容器上放置一个最大宽度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2016-12-17
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多