我正在尝试使用2列创建CSS表(宽度100%)。第一列具有固定宽度(例如180px),第二列应填充宽度的其余部分。
在第二列内,有一个长文本(在<p>
- 标签内)。现在我想使用text-overflow: ellipsis
将文本裁剪为一行,文本应该与可用空间一样长。
这就是我尝试过的:
<div class="container">
<div class="card">
<div class="card-i">
ABCD
</div>
<div class="card-r">
<strong>Some title</strong><br>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
</div>
</div>
</div>
以下CSS代码:
// This container is just for testing
.container {
width: 400px;
margin-bottom: 10px;
}
.card {
display: table;
width: 100%;
border: 1px solid #CCC;
}
.card-i, .card-r {
display: table-cell;
vertical-align: top;
padding: 0;
border: 1px solid #CCC;
}
.card-i {
width: 180px;
}
.card-r {
position: relative;
padding: 0 15px;
}
p {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
word-wrap: break-word;
}
答案 0 :(得分:1)
表格格式显示让基本元素根据其所包含的内容缩小/展开,因此height
和width
的工作方式类似于min-height
和min-width
。
table-layout:fixed;
可以强制width
display
充当width
,height
无论如何都会继续展开。
.container {
width: 400px;
margin-bottom: 10px;
}
.card {
display: table;
width: 100%;
border: 1px solid #CCC;
table-layout:fixed;
}
.card-i, .card-r {
display: table-cell;
vertical-align: top;
padding: 0;
border: 1px solid #CCC;
}
.card-i {
width: 180px;
}
.card-r {
position: relative;
padding: 0 15px;
}
p {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-all;
word-wrap: break-word;
}
&#13;
<div class="container">
<div class="card">
<div class="card-i">
ABCD
</div>
<div class="card-r">
<strong>Some title</strong><br>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
问题是card-r
没有任何宽度约束。要text-overflow: ellipsis
工作,必须是容器上的宽度限制
不要将card-i
设置为display: table-cell
,而是尝试将card-i
和card-r
设置为display: block
并使用calc
来计算右侧的宽度div需要。然后文本溢出应该工作。
.card-i, .card-r {
float: left;
display: block;
vertical-align: top;
padding: 0;
border: 1px solid #CCC;
}
.card-i {
width: 180px;
}
.card-r {
position: relative;
padding: 0 15px;
width: calc(100% - 214px);
}