html - 如何截断水平项目列表中的文本,以便首先截断最长的项目?
问题描述
我有一个限制为一行的标签列表。每个标签的文本需要在较小的屏幕上截断。这种截断应该如下进行:只截断最长的项目,直到它与第二长的项目长度相同,然后截断两者,直到它们都与第三长的项目长度相同,依此类推。
到目前为止,我只能提出两种不太正确的方法:
- 在下面的示例中,我使用了 flexbox。每个项目都被均匀截断,这意味着短项目很快被截断为一个字母,而较长的项目仍然很长。
.list {
display: flex;
}
.tag {
border: 1px solid black;
margin-right: 4px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
height: 20px;
}
<div class="list">
<div class="tag">Hello</div>
<div class="tag">What's going on?</div>
<div class="tag">Good morning, how are you?</div>
<div class="tag">What's up?</div>
</div>
- 在此示例中,我使用定义为百分比的最大宽度。这会过早地截断长项目,并且项目不会占据容器的整个宽度。
.tag {
border: 1px solid black;
margin-right: 4px;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
height: 20px;
max-width: calc(25% - 9px);
display: inline-block;
}
<div>
<div class="tag">Hello</div>
<div class="tag">What's going on?</div>
<div class="tag">Good morning, how are you?</div>
<div class="tag">What's up?</div>
</div>
解决方案
推荐阅读
- c# - 基于实时值进行或退出单元测试的正确方法
- time-series - 从时间序列数据中删除电子伪影
- java - 如何在java中减去两次不同的日期
- google-apps-script - 将所有工作表中的所有文本自动更改为大写,但不是整个 Google 电子表格中的数字
- javascript - 捕获按钮的值
- google-apps-script - 无法从谷歌表格自动发送电子邮件
- google-cloud-platform - 无法使用 Tensorflow 2.0 框架创建深度学习 VM
- sql-server - Hive 中的分组集不会产生与 SQL Server 相同的结果
- c# - 我想发送多个嵌入图像而不是附件
- python - 多处理只运行第一行代码