Bootstrap 4 'text-truncate' 类定位下面的文本
Posted
技术标签:
【中文标题】Bootstrap 4 \'text-truncate\' 类定位下面的文本【英文标题】:Bootstrap 4 'text-truncate' class positions the text belowBootstrap 4 'text-truncate' 类定位下面的文本 【发布时间】:2019-08-30 14:00:37 【问题描述】:如果标题太长,我会尝试在标题上添加省略号。我想尊重响应式布局,我不想为 card-title 添加固定宽度。
我使用 text-truncate 在卡片标题上添加省略号。
卡片在列中以使用文本左侧的图像。
<div class="container">
<div class="row">
@foreach($posts as $post)
<div class="col-lg-6 p-1">
<div class="card border-0">
<div class="row no-gutters">
<div class="col-auto">
<img src=" $post->featured_image ? $post->featured_image : '/images/placeholder-image.png' " class="img-fluid" style="width: 150px; height: 150px; object-fit: cover;">
</div>
<div class="col">
<div class="card-body">
<h3 class="card-title text-truncate"> $post->title </h3>
<p class="card-text m-0"> $post->short_summary </p>
<small> $post->published_at->format('M d') — $post->read_time </small>
</div>
</div>
<a href=" route('post', $post->slug) " class="stretched-link"></a>
</div>
</div>
</div>
@endforeach
</div>
</div>
但是如果我添加 text-truncate 类,标题和内容都下来了。
【问题讨论】:
嗨 pirmax,您能否制作一个工作代码 sn-p 或 JSFiddle 以便我们对其进行调试? 我不知道如何使用 JSFiddle :/ 你想截断有 2 行、3 行的文本吗? @Jake 我成功了:jsfiddle.net/o9j2ap30 @RyanNghiem 我只想截断文本标题,但如果我使用文本截断,则该块是另类的...... 【参考方案1】:您在<div class="col">
上缺少overflow: hidden;
。如果在使用 flexbox 时不将其父容器的溢出设置为隐藏,则内容将始终占据其全宽。
.col-special
overflow: hidden;
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<div class="container">
<div class="row">
<div class="col-lg-6 p-1">
<div class="card border-0">
<div class="row no-gutters">
<div class="col-auto">
<img src="https://via.placeholder.com/150x150" class="img-fluid" style="object-fit: cover;">
</div>
<div class="col col-special">
<div class="card-body">
<h3 class="card-title text-truncate">Comment écrire une "story" complète ?</h3>
<p class="card-text m-0">Une story, c'est en faite, simplement une histoire qui racoute ce que vous voule...</p>
<small>Apr 07 — 1 min read</small>
</div>
</div>
<a href=" route('post', $post->slug) " class="stretched-link"></a>
</div>
</div>
</div>
</div>
</div>
【讨论】:
为什么我的回答被否决了?如果有什么问题,请给我解释一下【参考方案2】:在内部row
上使用flex-nowrap
。这将防止 col
和 col-auto
换行。
<div class="col-lg-6 p-1">
<div class="card border-0">
<div class="row no-gutters flex-nowrap">
<div class="col-auto">
<img src="//placehold.it/400" class="img-fluid" style="width: 150px; height: 150px; object-fit: cover;">
</div>
<div class="col">
<div class="card-body">
<h3 class="card-title text-truncate">title is longer</h3>
<p class="card-text m-0">summary</p>
<small>read time</small>
</div>
</div>
<a href=".." class="stretched-link"></a>
</div>
</div>
</div>
https://www.codeply.com/go/szhxXTLETa
【讨论】:
用更长的数据测试,内容溢出了它的容器。你仍然需要在<div class="col">
上使用overflow: hidden;
【参考方案3】:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="card">
<div class="row no-gutters">
<div class="col-2">
<img src="//placehold.it/200" class="img-fluid" >
</div>
<div class="col-4">
<div class="card-block px-2">
<h4 class="card-title text-truncate">Title</h4>
<p class="card-text text-truncate">Description</p>
</div>
</div>
<div class="col-2">
<img src="//placehold.it/200" class="img-fluid" >
</div>
<div class="col-4">
<div class="card-block px-2">
<h4 class="card-title text-truncate">Title long textlong textlong textlong text</h4>
<p class="card-text text-truncate">long textlong textlong textlong textlong text</p>
</div>
</div>
</div>
</div>
</div>
【讨论】:
以上是关于Bootstrap 4 'text-truncate' 类定位下面的文本的主要内容,如果未能解决你的问题,请参考以下文章
从 Bootstrap 3 迁移到 Bootstrap 4? [关闭]
Bootstrap ~3.7 和最新 Bootstrap (4) 之间简单代码的样式问题
同时使用 Bootstrap 3 和 Bootstrap 4